簡體   English   中英

是否在每次加載頁面時重置php中的會話?

[英]Is session in php reset on every page load?

我正在嘗試通過使用以下腳本將會話壽命延長至3天。

 ini_set('session.gc_maxlifetime',3*24*60*60);
 ini_set('session.gc_probability',1);
 ini_set('session.gc_divisor',1);

 $sessionCookieExpireTime = 3*24*60*60;
 session_set_cookie_params($sessionCookieExpireTime);
 session_start();

 // page code

會話生存期必須保留3天,並且在第3天結束時會話必須到期。 我的問題是

1)是否在每次加載頁面時重置會話?

2)我是否在每次重新加載頁面時將生命周期延長至3天?

如果是,我不想延長每次頁面加載的會話壽命。 它應該第一次設置用戶訪問的頁面,並且應該在第3天結束時失效。 不應在每次重新加載頁面時重置會話生存期。

會話必須在會話過期的第三天結束時重置。 到那時為止,不應執行任何重置。

請在這個問題上幫助我。 提前致謝。

創建一個名為“ created”的會話變量,其中包含創建該變量時的時間戳。 現在,在每次加載頁面時,您都要檢查是否經過3天。 如果3天過去了,請取消設置會話變量並銷毀會話。

<?php

session_start();

$expiry = 60 * 60 * 24 * 3; // 3 days

if (!isset($_SESSION['created'])) {
    // Session variable 'created' doesn't exist, let's create one for the session
    $_SESSION['created'] = time();
} else if (time() - $_SESSION['created'] > $expiry) {
    // More than 3days has passed since the timestamp in 'created' session variable. Destroy the session.
    // Here you could also unset any other session variables you had. I am unsetting the 'created' variable.
    unset($_SESSION['created']);
    session_destroy();
}

?>

不,會話不會在每次頁面加載時重置,並且自第一次創建以來就將失效。

為什么要在天堂的緣故上呢? 現在,假設某位用戶在每周的每個工作日(周一至周六)使用您的程序。

因此,他可能在星期一(星期三)開始使用您的程序。 在星期三,會議刷新至星期六。 在星期六,會議刷新到星期二。 在星期二,會話將刷新到星期五,在星期五之前直到星期日,然后刷新->需要新的登錄名。

此行為是WTF,因為用戶無法確定為何一周之內在星期六和星期一之間注銷,而另一周則無法注銷。

暫無
暫無

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

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