我使用以下代码从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;
}///:~
答案 0 :(得分:3)
您需要将setcookie设置为过去的过期日期。请参见此处的示例:
答案 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。