我在 PHP 中的会话有这个问题,我永远无法理解!
我在 PHP 文件中有以下代码:
session_start();
$sid = session_id();
session_unset();
session_destroy();
echo $sid;
从逻辑上讲,每次它应该给我不同的会话 ID,因为显然我会打电话session_destroy()
,但它不会终止会话。它总是给我相同的会话 ID!
我做错了吗?
对我来说,只有以下组合才能完全破坏会话:
session_destroy();
session_unset();
session_regenerate_id(true);
编辑:你试过这个:
<?php
session_start();
$sid = session_id();
echo $sid;
echo "<br />";
//destroy session
session_destroy();
session_unset();
//now start the new session
session_start();
session_regenerate_id(true);
$sid = session_id();
echo $sid;
?>
它工作得很好。
参考这个链接。它说如果指定了 id,它将替换当前会话 id。为此,需要在 session_start() 之前调用 session_id()。
这里有一个例子说明
从 php 4.3.3 开始,您会在两次启动会话时收到通知。您可以使用 session_id() 来检测会话是否已经启动。在制作脚本之前,您必须知道 session_id() 在不知道会话 ID 时返回 false。所以现在我们可以制作一个脚本来检测会话是否启动,如果没有,它会启动一个会话。
This is what you get then:
<?php
if(!session_id()){
session_start();
}
?>