【发布时间】:2011-11-09 04:48:59
【问题描述】:
我目前遇到了 PHP 函数 session_id 的问题。
在我的脚本开始时,我想检查用户是否有会话并且我不想调用 session_start() 因为这会生成会话 cookie。
每当我调用 session_id 时,它都会返回 '' ,即使已明确设置了会话。 我通过 $_COOKIE 数组检查会话 cookie 来验证会话是否已设置。
【问题讨论】:
我目前遇到了 PHP 函数 session_id 的问题。
在我的脚本开始时,我想检查用户是否有会话并且我不想调用 session_start() 因为这会生成会话 cookie。
每当我调用 session_id 时,它都会返回 '' ,即使已明确设置了会话。 我通过 $_COOKIE 数组检查会话 cookie 来验证会话是否已设置。
【问题讨论】:
session_start() 不会生成新会话。来自the PHP docs:
session_start() 创建一个会话或恢复当前会话 在通过 GET 或 POST 请求传递的会话标识符上,或通过 通过 cookie。
您必须恢复旧会话才能获得其 ID。
【讨论】:
如果不调用 session_start(),PHP 的会话将不存在。在 session_start() 之后,您可以通过检查 $_SESSION 超全局数组中的键轻松检查用户是否有会话。
【讨论】:
如果您想检查他们是否有会话并获取会话 ID 而不创建新会话 ID,如果他们没有,您最好的选择是在 $_COOKIE 数组中查找会话 ID(或 $_GET,如果您使用用于存储 id 的那个)。
session_id() 只有在调用 session_start() 时才会起作用。如果会话已经存在,它将不会生成新的会话 ID,因此它仍会为您提供您正在寻找的会话 ID。
【讨论】: