在PHP网站中注销

在PHP网站中注销,php,session,cookies,Php,Session,Cookies,我正在尝试使用以下代码从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网站注销:

<?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)。即使在注销后按下“后退”按钮,我也希望登录页面本身。

尝试将其添加到代码中,这将有助于防止缓存

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');

在“页面”的开头添加一条语句,检查会话凭据,如果会话凭据不存在,则将用户重定向到登录页面,否则将加载该页面

要为您实际编写条件块,我需要实际的php,但大致如下

如果会话为False

将浏览器重定向到登录页面的脚本

否则

加载页


如果您的代码使用AJAX注销,则结束,然后使用
session\u 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, '/');
}

当你点击“后退”然后点击“刷新”时会发生什么?按“后退”不会重新加载网站,可能它仍在浏览器的缓存中,刷新以检查发生了什么以及它是否工作。我正在使用谷歌浏览器。当我进行注销和backbutton(刷新)时,…在使用会话变量的位置(上一页)显示错误,在未使用任何会话变量的剩余页面显示错误,显示原样..上一页的代码是什么?您是否正在验证是否加载了某种会话变量?即使这样也不起作用。您正在哪个浏览器中尝试它?当您返回并单击“刷新”时,它是否显示您已登录或注销?我正在使用Google Chrome。当我进行注销和backbutton(刷新)时…它在使用会话变量的(上一页的)位置显示错误,而未使用任何会话变量的剩余页面显示错误,它显示为原样…您的会话是否有变量?如果没有,请尝试使用
session_unset()而不是
会话_destroy()
session_start(); 
session_unset(); 
session_destroy(); 
header ('location:login.php?message=logout');