如果会话已存在,则销毁该会话?

时间:2014-09-24 14:42:55

标签: php

我要做的是:

当用户点击index.php页面(几页表格的开头)时,我需要销毁任何现有会话并启动一个新会话。这样就不会在新进程中重用旧的会话变量。

我做了什么:

我相信这应该检查会话是否已经存在,如果存在,则销毁它并开始一个新会话。 (需要使用session_id()进行检查)

if(session_id() == '') {
    session_start();
}else{
    session_destroy();
    session_start();
}

问题:

之前的会话变量仍然设置并导致流程出现问题。

我是否遗漏了重置所有会话变量的方法?

1 个答案:

答案 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