Не выходит из системы после истечения срока действия Cookie - PullRequest
0 голосов
/ 14 октября 2019

Я установил 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");

Не получено никаких ошибок. Он просто не делает то, что должен.

1 Ответ

0 голосов
/ 14 октября 2019

Ваши коды выхода должны проверить, что cookie не установлен, это означает, что cookie уже истек. вы проверяете, установлен ли cookie, если срок действия cookie уже истек, оператор if не будет работать. попробуйте следующий код.

поместите следующий код в функцию выхода из системы.

session_destroy();
setcookie('email', '', time()-60, '/');
redirect("../login.php");

Поместите этот код в заголовок

if(!isset($_COOKIE['email'])) {
     //logout(); call the logout function here.
}
...