在PHP中从HTTP切换到HTTPS时会话丢失将用户发送到结帐页面时,会将其切换http://sitename.com为https://sitename.com。结果,$_SESSION变量丢失了。该站点具有有效的SSL证书,可能会或可能不会使用。
3 回答
![?](http://img1.sycdn.imooc.com/5333a01a0001ee5302000200-100-100.jpg)
浮云间
TA贡献1829条经验 获得超4个赞
听起来会话cookie设置为安全。Cookie具有“安全”标志,如果设置为true,则表示cookie不会发送到非https网站。PHP可能正在使用它的会话cookie。您可以使用session_set_cookie_params函数或php.ini中的session.cookie_secure设置更改此设置。
![?](http://img1.sycdn.imooc.com/533e4c420001b2e502000200-100-100.jpg)
子衿沉夜
TA贡献1828条经验 获得超3个赞
解决方案假定安全和非安全服务器可以访问相同的后端服务(缓存,数据库存储等)。
当用户在完成购物时将用户发送到我们的结帐流程时,我们必须处理同样的问题。为了解决这个问题,我们设置了一个缓存层并缓存了所有相关数据。例如,我们将从会话值中收集产品ID和用户ID,序列化它们,创建哈希,最后使用哈希作为键将会话数据存储在缓存中。然后,我们将使用url中的哈希将用户重定向到安全站点。
当用户最终进入安全站点时,我们将尝试根据哈希将数据从缓存中提取出来。然后使用用户ID和产品ID,我们可以从数据库中加载所有定价和描述数据,并呈现给用户进行最终结账审核。
存在继承风险,因为缓存数据是易变的,但我们从未遇到过任何问题,因为重定向很快发生。
- 3 回答
- 0 关注
- 662 浏览
添加回答
举报
0/150
提交
取消