我正在尝试使用以下代码从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)。即使退出后按下后退按钮,我也希望登录页面。
答案 0 :(得分:2)
session_start();
session_unset();
session_destroy();
header ('location:login.php?message=logout');
答案 1 :(得分:0)
尝试将此添加到您的代码中,它应该有助于防止缓存。
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
答案 2 :(得分:0)
在“页面”的开头添加一个语句,用于检查会话凭据,如果它们不存在,则会将用户重定向到登录页面,否则会加载页面。
要实际为你编写条件块,我需要实际的php,但是有些东西......
如果会话是假的
将浏览器重定向到登录页面的脚本
否则
加载页面
结束如果
答案 3 :(得分:0)
如果您的代码使用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, '/');
}