如何正确删除PHP会话?

pyo*_*yon 4 php session

我之前使用这三行来删除会话:

session_start();
session_regenerate_id();
session_destroy();
Run Code Online (Sandbox Code Playgroud)

是否session_destroy()关闭会话,或者说我必须手动关闭它?

session_start();
session_regenerate_id();
$_SESSION = array();
session_write_close();
Run Code Online (Sandbox Code Playgroud)

Ter*_*eus 6

session_destroy删除存储的媒体(文件,数据库等)中的会话数据,但不删除$_SESSION数组或cookie,您必须手动执行,包括PHPSESSIDcookie.

我通常会用以下内容删除会话:

foreach($_SESSION as $key => $val)
    unset($_SESSION[$key]);
foreach($_COOKIE as $key => $val)
    setcookie($key, '', 1);
session_destroy();
Run Code Online (Sandbox Code Playgroud)


BTW当你调用session_regenerate_id()会话的文件被复制到新文件但旧的文件没有被删除,如果你想删除旧数据会话的文件(可能你想要),你必须用它来指定session_regenerate_id(TRUE).