为什么`session_destroy()`在PHP中不起作用?

时间:2012-04-28 06:59:51

标签: php session sessionid

我在PHP中遇到了这个问题,我从来没有理解过这个问题! 我在PHP文件中有以下代码:

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

逻辑上,每当它应该给我不同的会话ID时,显然我会调用session_destroy(),但它不会杀死会话。它总是给我相同的会话ID!
我做错了吗?

2 个答案:

答案 0 :(得分: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;
?>

它完美无缺。

答案 1 :(得分:2)

seesion_id() concept

参考此链接。 它表示如果指定了id,它将替换当前的会话ID。 session_id()需要在session_start()之前为此目的调用

这种状态有一个例子

从php 4.3.3开始,当你开始两次会话时会收到通知。您可以使用session_id()来检测会话是否已启动。在创建脚本之前,必须知道session_id()在没有已知会话ID时返回false。所以现在我们可以创建一个脚本,如果一个会话启动就会检测到,如果不是,它会启动一个会话。

This is what you get then:
<?php
if(!session_id()){
 session_start();
}
?>