好的,所以我有以下代码回应我已经设置的一些会话变量。(它们像预期的那样回应。)
(的index.php)
<?php session_start();?>
Username: <?php echo $_SESSION['username']; ?><br>
Password(encrypted): <?php echo $_SESSION['password']; ?><br>
ThemeColor: <?php echo $_SESSION['themecolor']; ?><br>
<小时/> 我有这个代码,我尝试结束会话,但是当我运行上面的代码时,变量仍然回显,所以会话仍然是活动的
(logout.php)
<?php
session_start();
session_unset();
session_destroy();
?>
<小时/> 你能告诉我我做错了吗?
答案 0 :(得分:2)
直接来自PHP documentation:
<?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();
?>
答案 1 :(得分:1)
保留现有的代码段并尝试添加以下代码段:
// Clear all values of the $_SESSION array by creating a new one
$_SESSION = array();
// If your session is setup to use cookies, expire the cookie
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
上面的代码片段是从原来的答案here借来的。所有功劳都归原作者 Pekka 。
答案 2 :(得分:0)
会话使用cookie,因此您需要销毁此cookie:
function destroySession()
{
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params['path'], $params['domain'],
$params['secure'], $params['httponly']
);
session_destroy();
unset($_SESSION);
}
答案 3 :(得分:0)
使用session_destroy()后,会话cookie被删除,会话不再存储在服务器上。 $ _SESSION中的值可能仍然可用,但它们不会在下一页加载。