2010-11-23 86 views
2

到期時間爲會議在我的登錄腳本我已經把一個複選框,人們可以檢查,如果他們想在要保持記錄。我有一個名爲複選框,「留駐」。設置,按登錄

現在,問題是,當用戶直接進入登錄頁面的索引時,會話已經設置(並且在「會話結束」時 - 或者瀏覽器關閉時)到期。所以,讓我們說你標誌着「記住我的登錄」框中,瀏覽網頁,然後關閉瀏覽器,然後回去 - 你會不會仍然可以登錄,因爲設置會話一生沒有工作,因爲會話始終通過索引腳本被設置爲沒有特定的生命週期。因爲不是每個人都希望在所有的時間被記錄下來,我真的不能設置「session_set_cookie_parameters」爲「從不」到期之前,我利用在session_start()(這就是爲什麼session_set_cookie_params在我的腳本中使用的session_start後()(我我不確定這真的有效))。

因此,對於指數的腳本,我只是使用session_start();並檢查是否有「用戶名」的值並通過登錄重定向用戶。 而對於動作腳本:

<?php 
session_start(); 
if(isset($_POST['stayin'])){ // In case they want to be kept logged in. 
session_set_cookie_params(999999999,"/path"); 
} 
?> 

我使用session_start()在每個腳本的最頂端。 使用PHP版本4.4.9。

回答

0

AFAIK session_set_cookie_params()僅修改了該腳本運行時間會話cookie長度(見http://www.php.net/manual/en/function.session-set-cookie-params.php)。只有這樣,才能永久地改變它是修改php.ini文件中的條目,但這種情況將會改變所有會話有一個長期超時這是不是你想要的任何東西。是使用客戶端cookie的一個選項,而不是使用服務器端會話?如果是這樣,您可以根據用戶是否勾選複選框,使用setcookie()單獨設置cookie的使用壽命。

<?php 
if(isset($_POST['stayin'])){ // In case they want to be kept logged in. 
    setcookie('logincookie', true, 999999999, '/path'); 
} 
?> 
0

最佳方式會話cookie過期時間怎麼設置是:

$cookie = session_get_cookie_params(); 
session_set_cookie_params(2851200, $cookie['path'], $cookie['domain'], 
$cookie['secure']);