Php 注销用户时出现问题

Php 注销用户时出现问题,php,Php,我使用以下代码将用户从web应用注销。登录时,我设置了cookie电子邮件和密码,但在注销后,访问主页会自动让用户再次登录,可能是因为cookie没有成功销毁。请告诉我怎么做才对。这是注销代码 function log_out() { $old_user = $_SESSION['valid_user']; unset($_SESSION['valid_user']); unset($_SESSION['login']); unset($_SESSION['blog_ad

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

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


尝试通过以下操作删除Cookie:

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

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

请尝试设置cookie过去一段时间的过期日期:


setcookie(“电子邮件”,“时间()-3600”)

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

总的来说,你必须回到过去

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

除其他评论外。您已经设置了$\u会话['valid\u user'];在执行unset之前,将$old_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;
}

请不要在Cookie中存储用户的密码。请参阅,以了解做同样事情的更好方法。从安全角度来看,将密码存储在cookie中是一个非常糟糕的主意。您可能需要在此处阅读这两种策略:。(尽管文档是针对java包的,但原则仍然非常适用!)我认为session\u destroy()函数返回bool,因此if($result\u dest)行检查会话是否成功销毁。虽然我觉得没必要这么做。