【问题标题】:Problem logging users out退出用户的问题
【发布时间】:2011-08-22 18:04:40
【问题描述】:

我使用以下代码将用户从 Web 应用程序中注销。登录时我设置了cookie电子邮件和密码,但是退出后访问主页会自动重新登录用户,可能是因为cookie没有成功销毁。请问我怎么做对。这是注销代码

function log_out() {
   $old_user = $_SESSION['valid_user'];
   unset($_SESSION['valid_user']);
   unset($_SESSION['login']);
   unset($_SESSION['blog_addr']);
   $result_dest = session_destroy();

   setcookie('email', '');
   setcookie('pswd', '');

   if (!empty($old_user)) 
     if ($result_dest)
       return true;
     else 
       $msg = 'Could not log you out ';
   else 
        $msg = 'You have not been logged in so you are not logged out ';      
   return $msg;
}///:~

【问题讨论】:

标签: php


【解决方案1】:

除了其他cmets。你已经设置了 $_SESSION['valid_user'];到 $old_user 之前你没有设置,所以你不应该检查 $old_user 因为它包含旧数据。您甚至不需要将它们设置为任何变量。你也应该使用括号。

function log_out() {
   unset($_SESSION['valid_user']);
   unset($_SESSION['login']);
   unset($_SESSION['blog_addr']);
   session_destroy();

   setcookie('email', '', time() - 3600);
   setcookie('pswd', '', time() - 3600);

   if (!isset($_SESSION['valid_user'])){
     if ($result_dest) // don't know what this does.
       return true;
     else 
       $msg = 'Could not log you out ';
   }
   else
        $msg = 'You have not been logged in so you are not logged out ';      
   return $msg;
}

【讨论】:

  • 我认为 session_destroy() 函数返回一个布尔值,所以 if($result_dest) 行检查会话是否成功销毁。虽然我真的不认为有必要。
【解决方案2】:

您是如何设置 cookie 的? (登录)。

一般设置cookie关闭,你必须回到过去!

setcookie("email", "",time()-3600,'/');

【讨论】:

    【解决方案3】:

    尝试将 cookie 的过期时间设置为过去一段时间:

    setcookie ("email", "", time() - 3600);

    【讨论】:

      【解决方案4】:

      尝试通过这样做来删除 cookie:

      setcookie ("email", "", time() - 3600);
      setcookie ("pswd", "", time() - 3600);
      

      这将通过将 cookie 设置为过去的到期日期来删除它们。

      【讨论】:

        【解决方案5】:

        您需要将 setcookie 设置为过去的过期日期。请参阅此处的示例:

        http://php.net/manual/en/function.setcookie.php

        【讨论】:

          猜你喜欢
          • 2021-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多