本文章介紹了幾種關於php session永不過期的設置方法,不修改程序是最好的方法了,因為如果修改程序,測試部一定非常郁悶像我一樣,那麼只能修改系統環境配置,其實很簡單,打開php.ini設置文件
,修改三行如下:
1、session.use_cookies
把這個的值設置為1,利用cookie來傳遞sessionid
2、session.cookie_lifetime
這個代表SessionID在客戶端Cookie儲存的時間,默認是0,代表浏覽器一關閉SessionID就作廢……就是因為這個所以PHP的session不能永久使用! 那麼我們把它設置為一個我們認為很大的數字吧,999999999怎麼樣,可以的!就這樣。
3、session.gc_maxlifetime
這個是Session數據在服務器端儲存的時間,如果超過這個時間,那麼Session數據就自動刪除! 那麼我們也把它設置為99999999。
就這樣一切ok了,當然你不相信的話就測試一下看看——設置一個session值過個10天半個月的回來看看,如果你的電腦沒有斷電或者宕機,你仍然可以看見這個sessionid。
當然也可能你沒有控制服務器的權限並不能像我一樣幸運的可以修改php.ini設置,一切依靠我們自己也是有辦法的,當然就必須利用到客戶端存儲cookie了,吧得到的sessionID存儲到客戶端的cookie裡面,設置這個cookie的值,然後把這個值傳遞給session_id()這個函數,具體做法如下:
代碼如下 復制代碼<?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的值
?>
如果很久以後(多久?你自己看吧)你回來刷新這個頁面,輸出的數字比你走的時候大了1那就對了!如果大了很多,估計是誰動你電腦了,這次測試就不准確了,呵呵……重新出去一會兒吧!
注意:在setcookie一行中的’PHPSESSID’並不是一定的,如果你遇到有個患有修改狂疾病的網管員,他可能對其做了修改,最好的方法是用phpinfo()這個函數看看,確認一下session.name一項的值,比較科學。