2015-01-13 14 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(); 
}