在PHP网站中注销


SignOut in PHP website

我正试图使用以下代码从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, '/');
}