【问题标题】:SignOut in PHP website在 PHP 网站中注销
【发布时间】:2013-06-27 17:50:17
【问题描述】:

我正在尝试使用以下代码从 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)。即使在注销后按下后退按钮,我也想在登录页面上。

【问题讨论】:

  • 当你回击然后点击刷新时会发生什么?
  • 按回不会重新加载网站,可能它仍在浏览器的缓存中,刷新以检查发生了什么以及是否有效。
  • 我正在使用谷歌浏览器。当我正在注销和返回按钮(刷新)时...它在使用会话变量的(上一页的)位置显示错误,而剩余的页面没有使用任何会话变量来显示,它显示为是..
  • 上一页的代码是什么?您是否正在验证是否加载了某种会话变量?

标签: php session cookies


【解决方案1】:
session_start(); 
session_unset(); 
session_destroy(); 
header ('location:login.php?message=logout');

【讨论】:

    【解决方案2】:

    尝试将此添加到您的代码中,它应该有助于防止缓存。

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

    【讨论】:

    • 即使这样也不行
    • 你用什么浏览器试试?
    • 另外,当您返回并点击刷新时,它是否显示您已登录或退出?
    • 我正在使用谷歌浏览器。当我正在注销和返回按钮(刷新)时...它在使用会话变量的(上一页的)位置显示错误,而剩余的页面没有使用任何会话变量来显示,它显示为是……
    • 你的会话有变量吗?如果没有尝试使用session_unset(); 而不是session_destroy();
    【解决方案3】:

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

    要真正为您编写条件块,我需要实际的 php,但类似于...

    如果会话为假

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

    其他

    加载页面

    如果结束

    【讨论】:

      【解决方案4】:

      如果您的代码使用 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, '/');
      }
      

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 2012-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 2015-12-25
        • 1970-01-01
        相关资源
        最近更新 更多