【问题标题】:session_id() always returns '' even if a session cookie is setsession_id() 始终返回 '' 即使设置了会话 cookie
【发布时间】:2011-11-09 04:48:59
【问题描述】:

我目前遇到了 PHP 函数 session_id 的问题。

在我的脚本开始时,我想检查用户是否有会话并且我不想调用 session_start() 因为这会生成会话 cookie。

每当我调用 session_id 时,它都会返回 '' ,即使已明确设置了会话。 我通过 $_COOKIE 数组检查会话 cookie 来验证会话是否已设置。

【问题讨论】:

    标签: php session


    【解决方案1】:

    session_start() 不会生成新会话。来自the PHP docs

    session_start() 创建一个会话或恢复当前会话 在通过 GET 或 POST 请求传递的会话标识符上,或通过 通过 cookie。

    您必须恢复旧会话才能获得其 ID。

    【讨论】:

      【解决方案2】:

      如果不调用 session_start(),PHP 的会话将不存在。在 session_start() 之后,您可以通过检查 $_SESSION 超全局数组中的键轻松检查用户是否有会话。

      【讨论】:

        【解决方案3】:

        如果您想检查他们是否有会话并获取会话 ID 而不创建新会话 ID,如果他们没有,您最好的选择是在 $_COOKIE 数组中查找会话 ID(或 $_GET,如果您使用用于存储 id 的那个)。

        session_id() 只有在调用 session_start() 时才会起作用。如果会话已经存在,它将不会生成新的会话 ID,因此它仍会为您提供您正在寻找的会话 ID。

        【讨论】:

        • 谢谢,我想我可以在没有 session_start 的情况下使用该函数,因为我的文档中的代码示例中从未提及 session_start。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 2016-09-01
        • 2012-09-17
        • 1970-01-01
        • 2019-02-01
        • 1970-01-01
        相关资源
        最近更新 更多