我在PHP中遇到了这个问题,我从来没有理解过这个问题! 我在PHP文件中有以下代码:
session_start();
$sid = session_id();
session_unset();
session_destroy();
echo $sid;
逻辑上,每当它应该给我不同的会话ID时,显然我会调用session_destroy()
,但它不会杀死会话。它总是给我相同的会话ID!
我做错了吗?
答案 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)
参考此链接。 它表示如果指定了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();
}
?>