PHP session延時失效php
咱們先來看看在php.ini中session怎麼設置,打開 php.ini,查找Session設置部分中如下一項,代碼以下:瀏覽器
1
2
|
session.save_path =
"N;/path"
session.save_path =
"C:/Temp"
#此處以你本身設定的路徑爲準
|
這項設置提供給咱們能夠給session存放目錄進行多級散列,其中「N」表示要設置的目錄級數,後面的「/path」表示session文件存放的根目錄路徑,好比咱們設置爲下面的格式,代碼以下:服務器
1
|
session.save_path =
"2;C:/Temp"
|
上面的設置表示咱們把php的session文件進行兩級目錄存儲,每一級目錄分別是0-9和a-z共36個字母數字爲目錄名,這樣存放session的目錄能夠達到36*36個,共1332個文件夾,相信做爲單臺服務器來講,這是徹底夠用了,若是說您的系統架構設計爲多臺服務器共享session數據,能夠把目錄級增長到3級或者更多。cookie
Session過時時間設定session
繼續PHP中的Session話題,在PHP中主要經過設置session.gc_maxlifetime來設定Session的生存週期,例如以下代碼:架構
1
2
3
4
|
<?php
ini_set
(
'session.gc_maxlifetime'
, 3600);
//設置時間
ini_get
(
'session.gc_maxlifetime'
);
//獲得ini中設定值
?>
|
下面提供一個別人封裝好的函數,可是我沒有測試過,僅供參考,代碼以下:函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?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秒之後過時。spa
session永不過時的方法.net
打開php.ini設置文件,修改三行以下:
一、session.use_cookies
把這個的值設置爲1,利用cookie來傳遞sessionid
二、session.cookie_lifetime
這個表明SessionID在客戶端Cookie儲存的時間,默認是0,表明瀏覽器一關閉SessionID就做廢……就是由於這個因此PHP的session不能永久使用! 那麼咱們把它設置爲一個咱們認爲很大的數字吧,999999999怎麼樣,能夠的!就這樣。
三、session.gc_maxlifetime
這個是Session數據在服務器端儲存的時間,若是超過這個時間,那麼Session數據就自動刪除!那麼咱們也把它設置爲99999999。
就這樣一切ok了,固然你不相信的話就測試一下看看——設置一個session值過個10天半個月的回來看看,若是你的電腦沒有斷電或者宕機,你仍然能夠看見這個sessionid。
固然也可能你沒有控制服務器的權限並不能像我同樣幸運的能夠修改php.ini設置,一切依靠咱們本身也是有辦法的,固然就必須利用到客戶端存儲cookie了,吧獲得的sessionID存儲到客戶端的cookie裏面,設置這個cookie的值,而後把這個值傳遞給session_id()這個函數,具體作法以下:
1
2
3
4
5
6
7
8
9
|
<?php
session_start();
// 啓動Session
$_SESSION
[
'count'
];
// 註冊Session變量Count
isset(
$PHPSESSID
)?session_id(
$PHPSESSID
):
$PHPSESSID
= session_id();
// 若是設置了$PHPSESSID,就將SessionID賦值爲$PHPSESSID,不然生成SessionID
$_SESSION
[
'count'
]++;
// 變量count加1
setcookie(
'PHPSESSID'
,
$PHPSESSID
, time()+3156000);
// 儲存SessionID到Cookie中
echo
$count
;
// 顯示Session變量count的值
?>
|