在我的会话启动脚本中,我选择session_name然后执行session_start.
$session_name = rand(0,1) ? 'first' : 'second';
session_name($session_name);
session_start();
Run Code Online (Sandbox Code Playgroud)
上面的代码在每个页面加载时运行.加载几页后,可能会有session_name'first'和session_name'second'的会话.
这是我的注销脚本中的代码,用于尝试销毁这两个会话:
session_start();
session_name("first");
session_unset();
session_destroy();
session_write_close();
session_start();
session_name("second");
session_unset();
session_destroy();
session_write_close();
Run Code Online (Sandbox Code Playgroud)
上面的脚本首先破坏但不是第二个.如果我再次运行注销脚本,则会破坏第二个会话,因为第一个会话已被删除.
如何在同一脚本中销毁两个会话名称的会话?
小智 3
尝试一下
<?php
session_name("first");
session_start();
echo session_status();
session_destroy();
echo session_status();
session_name("second");
session_start();
echo session_status();
session_destroy();
echo session_status();
?>
Run Code Online (Sandbox Code Playgroud)
我在 xampp 上测试了它,它返回值 2121 意味着会话处于活动状态,不存在,会话处于活动状态,不存在。
我将 session_name() 放在 session_start() 之前,因为按照您的方式设置名称在会话启动后不会生效。我用谷歌搜索过它,它必须对 php.ini 文件执行一些操作,其中 session.auto_start 设置为“true”。
关于这个主题的解释和辩论可以在这里找到:http://php.net/manual/en/function.session-name.php - 检查评论。
编辑:
再次检查您的编辑后,您基本上不会创建两个会话,而只会创建一个会话,并且它以随机名称“第一”或“第二”开头。您可以销毁会话,但 cookie 将保留。我已经在 xampp 上测试了你的代码,它确实做到了这一点。首先,PHP 启动一个会话并存储一个时间值为“session”的 cookie,重新加载页面后,它将再次加载两个选项之一,但这一次它将把现有的 cookie 时间更改为“N/A”。您应该寻找一种解决方案,在页面加载后清除域上的 cookie,如下所示:
<?php
$session_name = rand(0,1) ? 'first' : 'second';
session_name($session_name);
session_start();
deleteCookies($session_name);
function deleteCookies($skip_this_one) {
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
if ($name == $skip_this_one) {
//skip
}else{
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
}
//do something inside your session
//when done, stop the session the way you want
session_destroy();
}
?>
Run Code Online (Sandbox Code Playgroud)
这将删除所有以前的 cookie 并保持当前会话打开。
这个解决方案是从这里重写的:how to delete all cookies of my website in php
希望这可以帮助 :)