我要做的是:
当用户点击index.php页面(几页表格的开头)时,我需要销毁任何现有会话并启动一个新会话。这样就不会在新进程中重用旧的会话变量。
我做了什么:
我相信这应该检查会话是否已经存在,如果存在,则销毁它并开始一个新会话。 (需要使用session_id()
进行检查)
if(session_id() == '') {
session_start();
}else{
session_destroy();
session_start();
}
问题:
之前的会话变量仍然设置并导致流程出现问题。
我是否遗漏了重置所有会话变量的方法?
答案 0 :(得分:0)
在documentation中,您可以阅读:
session_destroy()会销毁与当前关联的所有数据 会话。它不会取消任何与之相关的全局变量 会话,或取消设置会话cookie。 session_destroy();
所以你必须做以下事情:
$_SESSION = array(); //empty session variable
$cookieParams = session_get_cookie_params();
setcookie(
session_name(),
'',
0,
$cookieParams['path'],
$cookieParams['domain'],
$cookieParams['secure'],
$cookieParams['httponly']
);
session_destroy(); //and now you can call your function