一個(gè)嚴(yán)格的PHP Session會(huì)話超時(shí)時(shí)間設(shè)置方法
更新時(shí)間:2014年06月10日 08:41:26 投稿:junjie
這篇文章主要介紹了一個(gè)嚴(yán)格的PHP Session會(huì)話超時(shí)時(shí)間設(shè)置方法,著重點(diǎn)在于結(jié)合兩種方法保證超時(shí)時(shí)間到,會(huì)話失效,需要的朋友可以參考下
最近某個(gè)PHP項(xiàng)目用到了限制登錄時(shí)間的功能,比如用戶登錄系統(tǒng)60分鐘后如果沒有操作就自動(dòng)退出,我搜索了網(wǎng)絡(luò)收集了有以下方法可供參考。
第一種方法即設(shè)置php.ini配置文件,設(shè)置session.gc_maxlifetime和session.cookie_lifetime節(jié)點(diǎn)屬性值,當(dāng)然也可以使用ini_set函數(shù)改變當(dāng)前上下文環(huán)境的屬性值:
復(fù)制代碼 代碼如下:
ini_set('session.gc_maxlifetime', "3600"); // 秒
ini_set("session.cookie_lifetime","3600"); // 秒
第二種方法即設(shè)置Session時(shí)間戳,比如下面的辦法。
在登錄成功時(shí)設(shè)置時(shí)間戳為當(dāng)前時(shí)間推后1小時(shí),$_SESSION['expiretime'] = time() + 3600;。在檢查用戶登錄情況使用如下代碼:
復(fù)制代碼 代碼如下:
if(isset($_SESSION['expiretime'])) {
if($_SESSION['expiretime'] < time()) {
unset($_SESSION['expiretime']);
header('Location: logout.php?TIMEOUT'); // 登出
exit(0);
} else {
$_SESSION['expiretime'] = time() + 3600; // 刷新時(shí)間戳
}
}
根據(jù)文章《http://www.dhdzp.com/article/52961.htm》,我們可以結(jié)合第一種和第二種方法來最終決定會(huì)話超時(shí)時(shí)間。
相關(guān)文章
PHP與MySQL開發(fā)的8個(gè)技巧小結(jié)
LAMP 架構(gòu)的網(wǎng)站,我以前注重的多是安裝/配置方面的,講述開發(fā)的相對(duì)較少,因?yàn)樽约簭氖麻_發(fā)也少??戳艘院?,頗有啟發(fā),以前開發(fā)中遇到的一些問題,迎刃而解。所以翻譯出來和大家共享。2010-12-12
ThinkPHP自動(dòng)驗(yàn)證失敗的解決方法
引用ThinkPHP2.0開發(fā)手冊(cè):ThinkPHP手冊(cè)類型檢查只是針對(duì)數(shù)據(jù)庫級(jí)別的驗(yàn)證,所以系統(tǒng)還內(nèi)置了數(shù)據(jù)對(duì)象的自動(dòng)驗(yàn)證功能來完成模型的業(yè)務(wù)規(guī)則驗(yàn)證,而大多數(shù)情況下面,數(shù)據(jù)對(duì)象是由表單提交的$_POST數(shù)據(jù)創(chuàng)建。2011-06-06

