2012-11-15 123 views
2

我正在玩一輛禪車,我想要這樣做,以便客戶會話在24分鐘後不會過期,這似乎是默認設置。會話超時時間 - 由服務器設置?

谷歌和谷歌搜索網站後,它似乎並沒有任何人有答案(關於如何更改管理員註銷會話時間的大量答案 - 我希望使用實際網站的人有更長的會議) 。我想這可能是一個安全的事情,沒有少,我看着它現在想不通代碼:

if (IS_ADMIN_FLAG === true) { 
    if (!$SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN)) { 
     $SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN); 
    } 
} else { 
    if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) { 
     $SESS_LIFE = 1440; 
    } 
} 

我試圖改變1440到86400(一天),但似乎沒有工作。我不完全確定這條線是什麼

if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) { 

這樣做!只有一個=之後。我猜這是問題所在?任何人都可以啓發我嗎?

+0

請確保您沒有與其他網站共享您的會話目錄。否則,使用最短'gc_maxlifetime'的網站可能會刪除*全部*會話文件,甚至是您的。 –

+0

@alvaro謝謝,我認爲現在更改代碼只是更容易:) –

+0

你誤會了我。如果您使用共享主機並且會話文件位於通用目錄中,只需更改設置將毫無用處。這只是檢查'phpinfo()'並在必要時更改'session.save_path'配置指令的問題。 –

回答

0
if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) { 
    $SESS_LIFE = 1440; 
} 

這得到的session.gc_maxlifetime從運行時配置的值,並將其設置爲$SESS_LIFE

如果$SESS_LIFE值爲零,則執行$SESS_LIFE = 1440;


更改此超時內:php.ini或使用

ini_set('session.gc_maxlifetime', 86400); 

或者在你的.htaccess,您可以添加行:

php_value session.gc_maxlifetime 86400 

參考:get_cfg_var,

+0

好的,我可以刪除if語句並設置變量$ SESS_LIFE = 86400;不使用ini_set?我不確定是否允許我在活動服務器上更改ini_set中的內容,當然它可能會影響其他網站嗎? –

+0

@crazysarah'session.gc_maxlifetime'可以在腳本中或通過'.htaccess'設置;真的不需要更改代碼。 –

+0

@crazysarah正如傑克所說,你可以把它作爲'php_value session.gc_maxlifetime 86400'在你的.htaccess中。 –