记录用户的问题

时间:2011-05-10 19:19:05

标签: php

我使用以下代码从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;
}///:~

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

一般情况下,设置一个cookie,你必须回到过去!

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

答案 3 :(得分:1)

除了其他评论。你设置了$ _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;
}

答案 4 :(得分:0)

尝试删除Cookie:

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

这将通过设置过去的过期日期来删除Cookie。