|
客戶就是上帝,唯一的上帝。于是上峰要求我們能夠?qū)崿F(xiàn)php中的session永不過期,除非我們的客服人員人為的讓他過期了。出于安全性的考慮我很不理解這種永不過期的行為;出于懶惰的原因我真的不想修改以前的程序。但是沒有辦法,我依然需要改。
不修改程序是最好的方法了,因?yàn)槿绻薷某绦?,測(cè)試部一定非常郁悶像我一樣,那么只能修改系統(tǒng)環(huán)境配置,其實(shí)很 簡(jiǎn)單,打開php.ini設(shè)置文件,修改三行如下:
1、session.use_cookies
把這個(gè)的值設(shè)置為1,利用cookie來傳遞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è)月的回來看看,如果你的電腦沒有斷電或者宕機(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ù),具體做法如下:
復(fù)制代碼 代碼如下:
<?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的值
?>
如果很久以后(多久?你自己看吧)你回來刷新這個(gè)頁面,輸出的數(shù)字比你走的時(shí)候大了1那就對(duì)了!如果大了很多,估計(jì)是誰動(dòng)你電腦了,這次測(cè)試就不準(zhǔn) 確了,呵呵……重新出去一會(huì)兒吧!
注意:在setcookie一行中的'phpSESSID'并不是一定的,如果你遇到有個(gè)患有修改狂疾病的網(wǎng)管員,他可能對(duì)其做了 修改,最好的方法是用phpinfo()這個(gè)函數(shù)看看,確認(rèn)一下session.name一項(xiàng)的值,比較科學(xué)。
php技術(shù):PHP中的session永不過期的解決思路及實(shí)現(xiàn)方法分享,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。