SSL上的Php会话重置

时间:2011-01-29 01:00:33

标签: php linux session-state

这是一个普通的php问题的变种似乎无法解决问题(和常识):当用户在我的网站上切换http和https时,php会转储会话的内容。这将是非常糟糕的,除了我在域test.mysite.com下运行它时网站工作正常的事实。当我在www.mydomain.com下运行它时,问题只出现在我们的新服务器上。代码在我的旧机器上运行得很好!

这两台服务器都在运行CentOS,Rackspace CloudServer上有一个麻烦的服务器。

有什么建议吗?

修改

只是为了让事情变得更清楚:当进入安全页面时,会话实际上会被清除。我不能回到不安全的页面来查看会话的原始内容,即使会话ID没有改变。

2 个答案:

答案 0 :(得分:1)

听起来你已经成为可怕的php.ini文件的诅咒的牺牲品。一些cookie参数设置不同。

我会确保开发和生产中的php.ini文件完全相同,你运行相同版本的PHP,理想情况下是相同的版本。


编辑:好的,所以它不一定是php.ini的差异。

查看您用于Cookie的域名。如果您在未明确设置域的情况下设置cookie,则仅为当前域。

如果这是www.example.com,那么访问http://example.com/的用户将被重定向到https://www.example.com/将失去他们的COOKIES。

为什么呢?因为cookie是针对确切的域设置的,并且浏览器不会将其发送到其他主机名。

如果您在多个名称上运行该网站,情况也是如此。请确保您只在一个名称上运行该网站。如果用户以任何其他名称到达,请在设置任何Cookie之前将其永久重定向重定向到One True Name。

答案 1 :(得分:-1)

您可以尝试使用此功能将secure标志设置为false吗?

<?php
    session_set_cookie_params(0,"/",".mysite.com",false,true);
?>

此处有更多信息:http://us2.php.net/manual/en/function.session-get-cookie-params.php