2014-03-13 53 views
2

我想通過使用下面的腳本將會話生存期延長到3天。會話在php重置每頁加載?

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天結束。它不應該在每次重新加載頁面時重置會話生存期。

會話僅在會話過期時的第3天結束時重置。直到那時不應該執行重置。

Plz幫助我解決這個問題。提前致謝。

回答

5

創建一個名爲「創造」創建變量時,其持有的那一刻時間戳的會話變量。現在在每一頁上載入您檢查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(); 
} 

?> 
+0

謝謝@Robert – Nag

2

不,會話不復位每個頁面加載,它會失效,因爲它是第一次創建的時間計算。

+0

謝謝@ user1708762 – Nag

-1

爲什麼看在上帝的份上你想要嗎?現在讓我們說一些用戶在每週的每個工作日(週一到週六)使用您的程序。

所以他可以開始使用上週一你的程序,會話是到星期三。星期三會議更新至星期六。星期六會議更新至星期二。在星期二,會話被刷新到星期五,直到星期五,直到星期日,然後booooom - >新的登錄需要。

此行爲是跆拳道,因爲用戶不能確定爲什麼他在一個星期週六和週一之間註銷,但不是在其他。

+0

這是不使用登錄系統,這是使用緩存的服務器響應數據,並應每隔3天重置。 – Nag