2014-09-24 104 views
0

我在SESSION上遇到問題。我需要12小時的會話,所以我必須在早上登錄,並且可以整天訪問我的網站。會話不超過一小時有效

我沒有在.htaccess

php_value session.cookie_lifetime 43200 
php_value session.gc_maxlifetime 43200 
php_value session.cache_expire 43200 

以下在我的index.php我已經插入下面的代碼:

echo ini_get("session.cookie_lifetime").'<br />'; 
echo ini_get("session.gc_maxlifetime").'<br />'; 
echo ini_get("session.cache_expire").'<br />'; 

我得到的resuilt:

43200 
43200 
43200 

然而如果我在一小時內沒有在我的網站上做任何事情,那麼會話將會失效。

任何能幫助我的人?

+0

您是否使用過chrome工具檢查cookie的過期時間? – used2could 2014-09-24 11:18:40

+0

當使用Debian時,Google for「debian php gc session」 - Debian PHP會話清理工作有點不同,通過使用cronjob。就我個人而言,我鼓勵大家切換到memcached會話處理程序。 – DanFromGermany 2014-09-24 12:21:10

+0

我知道這不是你問的問題,但是,將登錄詳細信息存儲在cookie中並使用cookie中的詳細信息「自動登錄」會更好。即通過「自動登錄」cookie詳細信息設置會話登錄詳細信息。詳情在這裏:[3128985/php-loginsystem-remember-me](http://stackoverflow.com/questions/3128985/php-loginsystem-remember-me)。一些託管網站禁止長時間的會話。 – 2014-09-24 12:31:15

回答

0

這應該做的伎倆:

ini_set('session.cookie_lifetime',12*60*60); 
ini_set('session.gc_maxlifetime',12*60*60); 
ini_set('session.cache_expire',12*60*60); 
session_start(); 

記得設置環境參數之前啓動任何會話。 也要小心,永遠不要超過65535,超過18小時!

+0

如果以下內容返回43200,我也應該在PHP中執行:ini_get(「session.cookie_lifetime」);?在我看來,如果我再次使用PHP再做一次,就不會改變任何東西。如我錯了請糾正我。 – AndVla 2014-09-24 16:18:49

+0

您可以確定您的腳本將使用正確的設置。 – 2014-09-24 16:28:06