我正试图使用以下代码从PHP网站注销:
<?php
session_start();
if(isset($_GET['logout']))
{
$_SESSION=array();
if($_COOKIE[session_name()])
{
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
header('Location: login.php');
}
?>
页面被重定向到登录页面,但当我点击浏览器的后退按钮时,我可以看到上一页。请提出一个全面的解决方案来解决这个问题,因为在各种帖子中,我找不到一个用户可以完全注销php网站的解决方案。(如果可能,不使用javascript)。即使注销后按下后退按钮,我也希望登录页面本身。
session_start();
session_unset();
session_destroy();
header ('location:login.php?message=logout');
尝试将其添加到代码中,这将有助于防止缓存。
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
在"页面"的开头添加一条语句,用于检查会话凭据,如果不存在,则将用户重定向到登录页面,否则加载页面。
要真正为您编写条件块,我需要实际的php,但需要一些类似。。。
如果会话为假
将浏览器重定向到登录页面的脚本
其他
加载页面
结束如果
如果您的代码使用AJAX注销,那么使用session_start()
将启动一个全新的会话,而不是继续您正在使用的会话。
如果您使用AJAX,请在用户登录时执行以下操作:
#start a new session
session_start();
#save the session id into a cookie
setcookie('SESSID', session_id(), 0, '/');
现在您的会话已保存,为了注销,请尝试以下代码:
if(isset($_COOKIE['SESSID']))
{
#retrieve the previous session id
session_id($_COOKIE['SESSID']);
session_start();
#destroy the session
session_destroy();
setcookie('SESSID', NULL, time() - 3600, '/');
}