Php 注销用户时出现问题
我使用以下代码将用户从web应用注销。登录时,我设置了cookie电子邮件和密码,但在注销后,访问主页会自动让用户再次登录,可能是因为cookie没有成功销毁。请告诉我怎么做才对。这是注销代码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
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)行检查会话是否成功销毁。虽然我觉得没必要这么做。