当将用户发送到结帐页面时,他们将从http://sitename.com
切换到https://sitename.com
。
因此,$_SESSION
变量会丢失。
该站点具有有效的SSL证书,该证书可能有一些用处,也可能没有用处。
发布于 2009-01-14 03:15:19
听起来会话cookie被设置为安全的。cookie有一个"secure"标志,如果设置为true,意味着cookie不会被发送到非https站点。PHP可能正在使用它的会话cookie。您可以使用session_set_cookie_params函数或使用php.ini中的session.cookie_secure设置来更改此设置。
发布于 2010-07-17 04:17:43
我们也遇到了这个问题。事实证明,这是因为我们在安装PHP时使用了suhosin补丁。我们通过在/etc/php.d/suhosin.ini
中设置suhosin.session.cryptdocroot = Off
来修复它。
有关suhosin.session.cryptdocroot
的suhosin手册,请参阅http://www.hardened-php.net/suhosin/configuration.html#suhosin.session.cryptdocroot。
我们最初从这篇博文中找到了修复:http://www.yireo.com/blog/general-news/315-switch-between-http-and-https-looses-php-session。
发布于 2011-11-16 04:43:56
以下解决方案假设安全服务器和非安全服务器可以访问相同的后端服务(缓存、数据库存储等)。
当用户完成购物时,我们必须处理相同的问题,将用户发送到我们的结帐流程。为了解决这个问题,我们放置了一个缓存层,并缓存了所有相关数据。例如,我们将从会话值中收集产品id和用户id,序列化它们,创建散列,最后使用散列作为键将会话数据存储在缓存中。然后,我们会使用url中的散列将用户重定向到安全站点。
当用户最终到达安全站点时,我们会尝试根据散列将数据从缓存中拉出。然后,使用用户id和产品id,我们可以从数据库中加载所有定价和描述数据,并呈现给用户以供最终结帐审查。
有一个继承风险,因为缓存数据是不稳定的,但我们从来没有遇到过任何问题,因为重定向发生得很快。
https://stackoverflow.com/questions/441496
复制相似问题