- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的 session 启动脚本中,我选择 session_name 然后执行 session_start。
$session_name = rand(0,1) ? 'first' : 'second';
session_name($session_name);
session_start();
以上代码在每次页面加载时运行。加载几页后,session_name 'first' 和 session_name 'second' 可能都会有 session 。
这是我的代码,位于我的注销脚本中,用于尝试销毁两个这些 session :
session_start();
session_name("first");
session_unset();
session_destroy();
session_write_close();
session_start();
session_name("second");
session_unset();
session_destroy();
session_write_close();
上面的脚本先销毁但不销毁第二个。如果我第二次运行注销脚本,它会破坏第二个 session ,因为第一个 session 已被删除。
如何在同一脚本中销毁两个 session 名称的 session ?
最佳答案
试一试
<?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();
?>
我已经在 xampp 上对其进行了测试,它返回值 2121,这意味着 session 处于事件状态,不存在, session 处于事件状态,不存在。
我将 session_name() 放在 session_start() 之前,因为像您那样设置名称在 session 已经启动后不会生效。我用谷歌搜索它,它必须对 php.ini 文件做一些事情,其中 session.auto_start 设置为“true”。
有关此主题的解释和辩论可在此处找到:http://php.net/manual/en/function.session-name.php - 检查评论。
已编辑:
再次检查您的编辑后,您基本上不会创建两个 session ,而只会创建一个 session ,它以随机名称“first”或“second”开头。您可以销毁 session ,但 cookie 将保留。我已经在 xampp 上测试了您的代码,它确实做到了这一点。首先,PHP 启动一个 session 并存储一个时间值为“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();
}
?>
这将删除所有以前的 cookie 并保持当前 session 打开。
此解决方案是从此处重写的:how to delete all cookies of my website in php
希望这有帮助:)
关于php - 如何在同一个 php 脚本中销毁两个不同的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294333/
我是一名优秀的程序员,十分优秀!