2015-01-13 44 views
1

我想要做的事情会在cookie过期时导致操作。比如我有一个cookie:对cookie过期执行操作

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

当Cookie到期我希望能够将它们自动重定向到一个不同的网页,并调用PHP脚本,将注销用户。

+0

[Sessions](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(); 
}