在PHP中从HTTP切换到HTTPS时会话丢失

在PHP中从HTTP切换到HTTPS时会话丢失

将用户发送到结帐页面时,会将其切换http://sitename.comhttps://sitename.com

结果,$_SESSION变量丢失了。

该站点具有有效的SSL证书,可能会或可能不会使用。


缥缈止盈
浏览 663回答 3
3回答

浮云间

听起来会话cookie设置为安全。Cookie具有“安全”标志,如果设置为true,则表示cookie不会发送到非https网站。PHP可能正在使用它的会话cookie。您可以使用session_set_cookie_params函数或php.ini中的session.cookie_secure设置更改此设置。

子衿沉夜

解决方案假定安全和非安全服务器可以访问相同的后端服务(缓存,数据库存储等)。当用户在完成购物时将用户发送到我们的结帐流程时,我们必须处理同样的问题。为了解决这个问题,我们设置了一个缓存层并缓存了所有相关数据。例如,我们将从会话值中收集产品ID和用户ID,序列化它们,创建哈希,最后使用哈希作为键将会话数据存储在缓存中。然后,我们将使用url中的哈希将用户重定向到安全站点。当用户最终进入安全站点时,我们将尝试根据哈希将数据从缓存中提取出来。然后使用用户ID和产品ID,我们可以从数据库中加载所有定价和描述数据,并呈现给用户进行最终结账审核。存在继承风险,因为缓存数据是易变的,但我们从未遇到过任何问题,因为重定向很快发生。
打开App,查看更多内容
随时随地看视频慕课网APP