1

我在 PHP 中的会话有这个问题,我永远无法理解!
我在 PHP 文件中有以下代码:

session_start();
$sid = session_id();
session_unset();
session_destroy();
echo $sid;

从逻辑上讲,每次它应该给我不同的会话 ID,因为显然我会打电话session_destroy(),但它不会终止会话。它总是给我相同的会话 ID!
我做错了吗?

4

2 回答 2

4

对我来说,只有以下组合才能完全破坏会话:

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;
?>

它工作得很好。

于 2012-04-28T07:02:38.877 回答
2

seesion_id() 概念

参考这个链接。它说如果指定了 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();
}
?>
于 2012-04-28T07:07:01.683 回答