簡體   English   中英

PHP會話生存期問題

[英]PHP session lifetime problem

我在這里使用PHP5。 我已經建立了一個登錄系統,用於對照數據庫中的記錄檢查用戶名和密碼。 我想使用會話來存儲記錄的值。 例如,當我到達用戶成功“登錄”的區域時:

if($errors = 0) {
    $_SESSION['logged'] = "1";
}

問題是我希望$_SESSION['logged']保持活動狀態5分鍾,所以當我在這段時間之后執行if($_SESSION['logged'] == "1")時,返回false。 另外,我想在用戶關閉瀏覽器后刪除此會話。 基本上,我需要一個會話配置,以便用戶可以安全地離開辦公桌,並且當他或某人在10分鍾后按刷新或在關閉瀏覽器后再次進入時,已被刪除的會話以及訪問受到限制時再次進入。

有人可以幫忙嗎? 謝謝。

使用session_set_cookie_params()更改會話cookie的生存期。 請注意,默認情況下,它設置為0 ,這意味着將設置cookie,直到用戶退出瀏覽器為止。 您可以通過以下方式執行此操作:

/* Set to 0 if you want the session
   cookie to be set until the user closes
   the browser. Use time() + seconds
   otherwise. */

session_set_cookie_params(0);
session_start();

然后檢查上一次活動時間,該時間在有人訪問頁面時更新。

if(($_SESSION['lastActivity'] + 300) < time()) {
    // timeout, destroy the session.
    session_destroy();
    unset($_SESSION);
    die('Timeout!');
} else {
    $_SESSION['lastActivity'] = time();
}

而不是將其設置為1,為什么不設置$_SESSION['logged_time'] = time(); 然后在您的應用程序中對照time()檢查時間?

如果您想實際終止整個會話,則具體細節可能會因會話處理程序而異,但是對於默認會話處理程序(以及其他行為良好的會話處理程序),您需要查看http:// us3 .php.net / manual / en / session.configuration.php

您可以更改配置設置session.cookie_lifetime ,例如在php.ini或.htaccess文件中:

session.cookie_lifetime指定發送到瀏覽器的cookie的生存時間(以秒為單位)。 值0表示“直到瀏覽器關閉”。 預設為0。

這意味着(我認為)您不能同時擁有基於超時的到期和關閉瀏覽器時的到期。 因此,最好的選擇是保留默認值,並按照其他人的建議在$_SESSION設置自己的計時器,從而使此答案毫無意義。

只要用戶停留在您的網站上,會話就會保持活動狀態。 您將必須使用Cookie來設置特定的超時時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM