$ _SESSION变量未在HTTPS上转移

时间:2011-03-16 22:09:42

标签: php https session-variables

我正在我的localhost上开发一个网站,其中一切正常,但现在该网站已上传到我们 插入 ONLINE / inserted 服务器,$_SESSION变量不会从login.php转移到index.php页面。两者都位于HTTPS上,该过程永远不会脱离HTTPS。正如我所说,我的本地主机上一切正常。

我的localhost的PHP是版本5.3.2,HTTPS服务器是5.2.6。我可以识别的关于会话的设置的唯一区别是session.use_only_cookies在我的本地主机上是On,在HTTPS服务器上是Off

有人可以说明为什么会话变量没有转移? PS。我在login.php和index.php中都有session_start();

提前致谢。

2 个答案:

答案 0 :(得分:0)

您是否检查过会话cookie是否在HTTP和HTTPS请求之间转移?并且双方都存在相同的会话令牌?

如果通过HTTPS页面建立的cookie被标记为“仅安全”,它将不会被传输到非SSL页面,因此您将在非安全页面上获得一个全新的空会话,这将给出你是“缺少”会话变量的症状。他们并没有真正失踪,只是在其他一些现在没有活动的会议中。

答案 1 :(得分:0)

有些事情可能会出错。

确保通过https访问login.php和index.php。 session.cookie_secure默认为关闭,但您永远不会知道。

同时确保他们都在同一个域中。 Cookie是按域设置的。

也许有一些古怪的cookie设置?您可以使用以下网址查看当前会话Cookie设置:session_get_cookie_params() 您还可以验证在浏览器中设置cookie的方式(如果有的话),对于Opera,您可以右键单击页面,选择“编辑站点首选项”,然后使用“Cookie”选项卡。从头脑中不了解其他浏览器...

另一种可能性是borked session.save_path,运行session_save_path()没有任何参数来获取当前的session_save_path,确保运行PHP的用户(通常但不一定是运行Web服务器的同一用户)可以写入这个目录。