2015-01-13 3 views
1

Что я хочу сделать, это может привести к действию при истечении срока действия файла cookie. Например у меня есть печенье:Выполнение действия по истечении срока действия cookie

setcookie('loggedIn', true, time()+ 3600); 

Когда печенье истекает, я хотел бы, чтобы иметь возможность автоматически перенаправлять их на другой веб-страницы и вызвать PHP скрипт, который будет зарегистрировать пользователя из.

+0

[Сессии] (http://php.net/manual/en/book.session.php) больше подходят для управления входами. – Scuzzy

ответ

3

Вы можете проверить это через $_COOKIE.

if(!isset($_COOKIE['loggedIn'])){ 
    header('Location: /path/to/another/page'); 
    exit; 
} 

Вы можете создать код в отдельном файле и включить его на каждой странице, либо его можно реализовать в XHR.

+0

Я хоть об этом, но это означало бы включение его на каждую страницу. Я искал более общее решение, в котором при истечении срока действия cookie скрипт автоматически запускается, а не только на загрузку страницы (это когда это нужно будет запускать). – yitzih

+1

@yitzih Вы можете написать это в отдельном файле и разместить его на каждой странице? ИЛИ вы можете реализовать его в XHR – Sithu

2

Похоже, что то, что вы пытаетесь сделать, автоматически выведет пользователей из сети через некоторое время. Окончание срока действия Cookie не является подходящим способом для этого - дата истечения срока действия файла cookie может быть изменена пользователем, а файлы cookie могут быть удалены без истечения срока их действия. (Например, если пользователь очищает файлы cookie в своем браузере или использует сеанс приватного просмотра.)

Правильным способом автоматического входа в систему пользователя будет сохранение даты истечения срока действия в сеансе, например.

// during login 
$_SESSION["valid_until"] = time() + 3600 * 3; // stay logged in for three hours 

// then, during page startup 
if ($_SESSION["valid_until"] < time()) { 
    session_destroy(); // or store data in the session to indicate it's inactive 
    header("Location: error.php?err=session-timeout"); 
    exit(); 
} 
Смежные вопросы