簡體   English   中英

php保持會話活動多​​天

[英]php keep session alive for multiple days

我有一個應用程序,我想讓用戶選擇在相當長的一段時間內保持登錄狀態,比如 3 天,類似於谷歌郵件、Facebook 或linkedin。 (它主要通過電話訪問,數據比電話上的其他東西敏感得多。)現在我在登錄時設置了大約四個會話變量,例如用戶 ID、名稱等,以避免出現大量重新編碼和丟失的功能,我希望所有這些變量都可以訪問。

設置會話變量時,有沒有辦法將會話長度增加到 72 小時?

或者,如果您需要設置 cookie,當設置了多個會話變量時,什么是實現長時間登錄的最佳實踐。

謝謝。

您可以通過多種方式設置會話。 方法之一是在php.ini中設置

session.gc_maxlifetime = 360*72

用 php 你可以做到

ini_set(’session.gc_maxlifetime’, 360*72);

你也可以使用

session_set_cookie_params(360*72,"/");

http://pl1.php.net/session_set_cookie_params

它設置會話cookie。 您還可以序列化$_SESSION並將其設置在 cookie 中。

我想只有通過將會話寫入數據庫才有可能

您可以在許多天后根據用戶請求設置一個長期存在的 cookie 並檢查相同的值。

使用 cookie 值作為表中的鍵來驗證用戶身份。

然后從數據庫重新加載該用戶的會話。

也許您可以使用 HTML 5 的local storage功能的session storage

我知道這與 cookie 不完全相同,但我只是想提出這個建議。 也許它可以幫助:)

手機上舊版本的瀏覽器可能存在一些版本問題。 您可以通過以下方式檢查它們: http : //caniuse.com/namevalue-storage

還有另一件事。 您可以使用“記住我”cookie 來長期存儲重要信息。 據我所知,延長 cookie 的生命周期並不是一個“好習慣”。

您可以通過每 5 分鍾向將會話 ID 存儲在變量中的 php 函數發送一個帖子來實現此目的,然后銷毀會話,再次創建它並再次提供會話 ID:

<?php

function restart_session(){

    $user_session = $_SESSION['id'];

    session_destroy();
    session_start();

    $_SESSION['id'] = $user_session;

}
?>

暫無
暫無

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

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