session_destroy()銷燬所有與當前 會話相關的數據。 它不會取消設置任何與會話相關的全局變量,也不會取消設置會話Cookie。要再次使用會話變量 ,必須調用session_start()。
爲了完全消除會話,就像登錄用戶一樣, 會話ID也必須取消設置。如果使用cookie傳播會話ID(默認行爲),那麼會話cookie必須被刪除,其中 。 setcookie()可用於此目的。
http://php.net/manual/en/function.session-destroy.php
手動帶有一個代碼例如:
實施例#1銷燬用$ _SESSION
<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
?>
**更新會話**
PHP版本5.3.6-1 3 Linux的石灰3.0.0-1-686-PAE#1 SMP星期三年08月17 4時28分34秒UTC 2011的i686
的Apache/2.2.19(Debian的)
會話設置(的phpinfo)
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 0 0
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php5 /var/lib/php5
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0
更新
所以。以下設置導致相同的問題。當且僅如果我sening會話ID作爲請求參數locahost?PHPSESSID=whatever
ini_set('session.auto_start', 'on');
ini_set('session.use_trans_sid', 'on');
ini_set('session.use_cookies', 'off');
ini_set('session.use_only_cookies', 'off');
if(!session_id())
session_start();
echo session_id();
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
重要: 這個設置是有價值的會話劫持[Session fixation]
+1擊敗我的同一個答案。 –
@hakre謝謝:) – teemitzitrone
@ maggie-我試過,但沒有工作 - 請參閱我上面的問題編輯。 – Yarin