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