我之前使用这三行来删除会话:
session_start();
session_regenerate_id();
session_destroy();
session_destroy()
关闭会话,还是必须手动关闭会话?
session_start();
session_regenerate_id();
$_SESSION = array();
session_write_close();
答案 0 :(得分:6)
session_destroy
删除存储在媒体(文件,数据库等)中的会话数据,但不删除$_SESSION
数组或cookie,你必须手动执行,包含PHPSESSID
Cookie。
我通常会删除类似这样的会话:
foreach($_SESSION as $key => $val)
unset($_SESSION[$key]);
foreach($_COOKIE as $key => $val)
setcookie($key, '', 1);
session_destroy();
BTW当您调用session_regenerate_id()
会话的文件被复制到新文件但旧的文件未被删除时,如果要删除旧数据会话的文件(可能是您想要的),则必须使用{{1}指定它}}
答案 1 :(得分:1)
如果您正在销毁会话,那么就不需要session_write_close(),就像在手册中它执行以下操作一样:
会话数据通常在脚本终止后存储,无需调用session_write_close(),但由于会话数据被锁定以防止并发写入,因此任何时候只有一个脚本可以对会话进行操作。