Cookie过期后未注销

问题描述 投票:-1回答:1

我在测试时将setcookie设置为+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");

没有任何错误。它只是没有按照原计划做。

php session-cookies setcookie
1个回答
-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.
}
© www.soinside.com 2019 - 2024. All rights reserved.