[英]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.