【问题标题】:Different session ID every time session_start is executed每次执行 session_start 时不同的会话 ID
【发布时间】:2011-08-13 11:16:17
【问题描述】:

我有以下源码

session1.php

<?php

session_start();
echo session_id();

?>

session2.php

<?php

session_start();
echo session_id();

?>

当我访问 session1.php 然后访问 session2.php 时,我得到不同的输出。

为什么要这么做?

【问题讨论】:

    标签: php session sessionid


    【解决方案1】:

    如果您在 *nix 下运行,请尝试将 session.save_path 设置为 /tmp。如果这不起作用,请查看浏览器的 cookie 缓存以查看 cookie 是否确实被浏览器保存。

    【讨论】:

      【解决方案2】:

      一种罕见的边缘情况,但我发现php.ini 的会话名称中有一个点导致了这个问题!!

      session.name = THIS.DOESNTWORK
      

      【讨论】:

        【解决方案3】:

        尝试将会话 cookie 存储在数据库中而不是服务器上。这为我节省了大量的超时和其他会话 cookie 问题,特别是如果您在共享服务器上。

        这可能会有所帮助:http://www.raditha.com/php/session.php

        祝你好运

        【讨论】:

        • 我认为当您保存会话密钥时,请使用 memcache 之类的东西。
        【解决方案4】:

        浏览器未将会话 cookie 发送回服务器。这可能有两个原因。

        1. 浏览器配置为不向服务器发送 cookie。您不能强制浏览器发送 cookie。在这种情况下,您唯一的选择是在 URL 中传递会话标识符,尽管这通常不是一个好主意。
        2. 服务器配置为不使用 cookie 作为会话标识符(通过 session.use_cookies 配置选项)。

        【讨论】:

        • // 刚刚检查 phpinfo().session.use_cookies 是否设置为 On,但 session.save_path 没有值。 session.save_path 是否可能导致此问题?
        • @Moon 这当然很奇怪。在我的 phpinfo() 中,即使在 php.ini 中没有明确提及它,它也会被设置。
        • 我知道这是旧帖子,但只在 IE 上遇到了同样的问题并找到了解决方案,所以想分享一下,以防有人遇到同样的问题。我在我的 php 代码中取消设置所有全局变量,而 IE 没有工作
        猜你喜欢
        • 2012-05-01
        • 2011-01-15
        • 1970-01-01
        • 2011-01-14
        • 2013-04-01
        • 1970-01-01
        • 2017-10-05
        • 2016-02-03
        • 2014-04-22
        相关资源
        最近更新 更多