在PHP网站上签名

时间:2013-06-27 17:50:18

标签: 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网站的解决方案。 (如果可能的话,不使用javascript)。即使退出后按下后退按钮,我也希望登录页面。

4 个答案:

答案 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, '/');
}