在测试过程中,我已将cookie设置为+60 60秒。 cookie在浏览器中过期后,它并没有注销我。浏览器中的cookie会过期,并且不会从Chrome中的设置中消失,但是我仍然可以登录。希望这是有道理的。
这是我正在从事的项目。出于安全原因,我试图将Cookie设置为在一段时间后过期并注销。
/****************User login functions ********************/
function login_user($email, $password, $remember) {
$sql = "SELECT password, id FROM users WHERE email = '".escape($email)."' AND active = 1";
$result = query($sql);
if(row_count($result) == 1) {
$row = fetch_array($result);
$db_password = $row['password'];
if(md5($password) === $db_password) {
if($remember == "on") {
setcookie('email', $email, time()+60, '/');
}
$_SESSION['email'] = $email;
return true;
} else {
return false;
}
}
} // end of function
/****************logged in function ********************/
function logged_in(){
if(isset($_SESSION['email']) || isset($_COOKIE['email'])){
return true;
} else {
return false;
}
} // functions
我的注销是:
session_destroy();
if(isset($_COOKIE['email'])) {
unset($_COOKIE['email']);
setcookie('email', '', time()-60);
}
redirect("../login.php");
未收到任何错误。只是没有按照原意做。
答案 0 :(得分:-1)
您的注销代码需要检查cookie是否未设置,这意味着cookie已经过期。您正在做的是检查cookie是否已设置,当cookie已经过期时,if语句将不起作用。尝试以下代码。
在注销功能中输入以下代码。
session_destroy();
setcookie('email', '', time()-60, '/');
redirect("../login.php");
将此代码放在标题中
if(!isset($_COOKIE['email'])) {
//logout(); call the logout function here.
}