詳解php設(shè)置session(過期、失效、有效期)
在php中設(shè)置session有很多方面包有給session設(shè)置值或直接設(shè)置過期、失效和有效期,下面小編來(lái)給大家給各位朋友介紹怎么使用。
我們先來(lái)看看在php.ini中session怎么設(shè)置,打開 php.ini,查找Session設(shè)置部分中以下一項(xiàng),代碼如下:
session.save_path = "N;/path" session.save_path = "C:/Temp" #此處以你自己設(shè)定的路徑為準(zhǔn)
這項(xiàng)設(shè)置提供給我們可以給session存放目錄進(jìn)行多級(jí)散列,其中“N”表示要設(shè)置的目錄級(jí)數(shù),后面的“/path”表示session文件存放的根目錄路徑,比如我們?cè)O(shè)置為下面的格式,代碼如下:
session.save_path = "2;C:/Temp"
上面的設(shè)置表示我們把php的session文件進(jìn)行兩級(jí)目錄存儲(chǔ),每一級(jí)目錄分別是0-9和a-z共36個(gè)字母數(shù)字為目錄名,這樣存放session的目錄可以達(dá)到36*36個(gè),共1332個(gè)文件夾,相信作為單臺(tái)服務(wù)器來(lái)說(shuō),這是完全夠用了,如果說(shuō)您的系統(tǒng)架構(gòu)設(shè)計(jì)為多臺(tái)服務(wù)器共享session數(shù)據(jù),可以把目錄級(jí)增加到3級(jí)或者更多。
Session過期時(shí)間設(shè)定
繼續(xù)PHP中的Session話題,在PHP中主要通過設(shè)置session.gc_maxlifetime來(lái)設(shè)定Session的生存周期,例如如下代碼:
<?php
ini_set('session.gc_maxlifetime', 3600); //設(shè)置時(shí)間
ini_get('session.gc_maxlifetime');//得到ini中設(shè)定值
?>
下面提供一個(gè)別人封裝好的函數(shù),但是我沒有測(cè)試過,僅供參考,代碼如下:
<?php
function start_session($expire = 0)
{
if ($expire == 0) {
$expire = ini_get('session.gc_maxlifetime');
} else {
ini_set('session.gc_maxlifetime', $expire);
}
if (emptyempty($_COOKIE['PHPSESSID'])) {
session_set_cookie_params($expire);
session_start();
} else {
session_start();
setcookie('PHPSESSID', session_id(), time() + $expire);
}
}
?>
使用方法:
加入start_session(600);//600秒以后過期。
session永不過期的方法
打開php.ini設(shè)置文件,修改三行如下:
1、session.use_cookies
把這個(gè)的值設(shè)置為1,利用cookie來(lái)傳遞sessionid
2、session.cookie_lifetime
這個(gè)代表SessionID在客戶端Cookie儲(chǔ)存的時(shí)間,默認(rèn)是0,代表瀏覽器一關(guān)閉SessionID就作廢……就是因?yàn)檫@個(gè)所以PHP的session不能永久使用! 那么我們把它設(shè)置為一個(gè)我們認(rèn)為很大的數(shù)字吧,999999999怎么樣,可以的!就這樣。
3、session.gc_maxlifetime
這個(gè)是Session數(shù)據(jù)在服務(wù)器端儲(chǔ)存的時(shí)間,如果超過這個(gè)時(shí)間,那么Session數(shù)據(jù)就自動(dòng)刪除!那么我們也把它設(shè)置為99999999。
就這樣一切ok了,當(dāng)然你不相信的話就測(cè)試一下看看——設(shè)置一個(gè)session值過個(gè)10天半個(gè)月的回來(lái)看看,如果你的電腦沒有斷電或者宕機(jī),你仍然可以看見這個(gè)sessionid。
當(dāng)然也可能你沒有控制服務(wù)器的權(quán)限并不能像我一樣幸運(yùn)的可以修改php.ini設(shè)置,一切依靠我們自己也是有辦法的,當(dāng)然就必須利用到客戶端存儲(chǔ)cookie了,吧得到的sessionID存儲(chǔ)到客戶端的cookie里面,設(shè)置這個(gè)cookie的值,然后把這個(gè)值傳遞給session_id()這個(gè)函數(shù),具體做法如下:
<?php
session_start(); // 啟動(dòng)Session
$_SESSION['count']; // 注冊(cè)Session變量Count
isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID = session_id();
// 如果設(shè)置了$PHPSESSID,就將SessionID賦值為$PHPSESSID,否則生成SessionID
$_SESSION['count']++; // 變量count加1
setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 儲(chǔ)存SessionID到Cookie中
echo $count; // 顯示Session變量count的值
?>
以上就是php設(shè)置session的具體做法,內(nèi)容涉及session設(shè)置值或直接設(shè)置過期、失效和有效期,希望對(duì)大家的學(xué)習(xí)有所幫助。
- PHP中使用Session配合Javascript實(shí)現(xiàn)文件上傳進(jìn)度條功能
- PHP使用Session實(shí)現(xiàn)上傳進(jìn)度功能詳解
- PHP實(shí)現(xiàn)提高SESSION響應(yīng)速度的幾種方法詳解
- PHP Session 變量的使用方法詳解與實(shí)例代碼
- PHP session有效期問題
- PHP中session使用方法詳解
- PHP會(huì)話控制:Session與Cookie詳解
- PHP 文件上傳進(jìn)度條的兩種實(shí)現(xiàn)方法的代碼
- php ajax實(shí)現(xiàn)文件上傳進(jìn)度條
- PHP利用APC模塊實(shí)現(xiàn)文件上傳進(jìn)度條的方法
- PHP實(shí)現(xiàn)帶進(jìn)度條的Ajax文件上傳功能示例
- PHP基于session.upload_progress 實(shí)現(xiàn)文件上傳進(jìn)度顯示功能詳解
相關(guān)文章
php使用GD庫(kù)創(chuàng)建圖片縮略圖的方法
這篇文章主要介紹了php使用GD庫(kù)創(chuàng)建圖片縮略圖的方法,涉及php使用GD庫(kù)操作圖片的相關(guān)技巧,需要的朋友可以參考下2015-06-06
php實(shí)現(xiàn)jQuery擴(kuò)展函數(shù)
今天在運(yùn)行書上的jQuery代碼時(shí),不知道是書上弄錯(cuò)了,還是我的jQuery版本的問題,例子上面有一個(gè)jQuery函數(shù)不存在。2009-10-10
php中json_decode()和json_encode()的使用方法
json_decode對(duì)JSON格式的字符串進(jìn)行編碼而json_encode對(duì)變量進(jìn)行 JSON 編碼,需要的朋友可以參考下2012-06-06
淺談PHP模擬發(fā)送POST請(qǐng)求之curl基本使用
今天來(lái)介紹PHP模擬發(fā)送POST請(qǐng)求的重型武器——cURL函數(shù)庫(kù)的使用和其多線程的優(yōu)化方法。說(shuō)起cURL函數(shù),可謂是老生常談,但網(wǎng)上許多資料都在關(guān)鍵部分語(yǔ)焉不詳,于是筆者翻了些資料,結(jié)合自己的筆記,總結(jié)了這篇文章,希望能給初次接觸cURL的開發(fā)者提供一些幫助。2021-05-05
FastCGI 進(jìn)程意外退出造成500錯(cuò)誤
這篇文章主要介紹了FastCGI 進(jìn)程意外退出造成500錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2015-07-07
優(yōu)化使用mysql存儲(chǔ)session的php代碼
2008-01-01
Linux fgetcsv取得的數(shù)組元素為空字符串的解決方法
使用CSV導(dǎo)入數(shù)據(jù)的時(shí)候,我們通常用的是Windows系統(tǒng),使用GBK在Windows的Excel中編輯2011-11-11

