我以前用過這三條線來刪除會話:如何正確刪除一個PHP會話?
session_start();
session_regenerate_id();
session_destroy();
是否session_destroy()
關閉會話,或者說我必須手動關閉它?
session_start();
session_regenerate_id();
$_SESSION = array();
session_write_close();
我以前用過這三條線來刪除會話:如何正確刪除一個PHP會話?
session_start();
session_regenerate_id();
session_destroy();
是否session_destroy()
關閉會話,或者說我必須手動關閉它?
session_start();
session_regenerate_id();
$_SESSION = array();
session_write_close();
如果你正在破壞會話那麼是不是真的需要session_write_close(),按照手冊它下面的:
會話數據通常存儲在將腳本終止而不需要調用session_write_close(),但由於會話數據被鎖定以防止併發寫入,所以任何時候只有一個腳本可以在會話上運行。
session_destroy
刪除會話的數據被存儲在介質(文件,數據庫等),但不刪除$_SESSION
陣列或餅乾,你必須做手工,包含PHPSESSID
餅乾。
我通常像這樣的東西刪除會話:
foreach($_SESSION as $key => $val)
unset($_SESSION[$key]);
foreach($_COOKIE as $key => $val)
setcookie($key, '', 1);
session_destroy();
BTW,當你調用session_regenerate_id()
會話的文件複製到新的文件,但舊的沒有被刪除,如果你想刪除舊的數據會話的文件(可能是你想要的),你必須用session_regenerate_id(TRUE)
來指定它。
刪除每個cookie(例如,如果您在當前域中使用其他Web應用程序的Cookie。你只需要刪除持有會話的cookie:'setcookie(session_name(),'',0);未設置($ _ COOKIE [會話名稱()]);' – 2014-06-01 19:40:41