IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁網(wǎng)絡(luò)編程PHP編程 → PHP中的session永不過期的解決思路及實(shí)現(xiàn)方法

PHP中的session永不過期的解決思路及實(shí)現(xiàn)方法

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  讓PHP的session永不過期,你可能沒有遇到這么郁悶的問題,但是我遇到過,很郁悶。

  我們前期開發(fā)了一個(gè)只有公司客服人員才能使用的系統(tǒng)——有限的幾個(gè)客服人員。就是這有限的幾個(gè)客服人員前幾天突然就提出這樣的問題:我們每隔很短一段時(shí)間 (半個(gè)小時(shí)不操作頁面),正著急解決客戶問題的時(shí)候,系統(tǒng)卻提示需要登錄,耽誤了客戶的時(shí)間…… 這很不爽!

  客戶就是上帝,唯一的上帝。于是上峰要求我們能夠?qū)崿F(xiàn)PHP中的session永不過期,除非我們的客服人員人為的讓他過期了。出于安全性的考慮我很不理解這種永不過期的行為;出于懶惰的原因我真的不想修改以前的程序。但是沒有辦法,我依然需要改。

  不修改程序是最好的方法了,因?yàn)槿绻薷某绦?,測試部一定非常郁悶像我一樣,那么只能修改系統(tǒng)環(huán)境配置,其實(shí)很 簡單,打開php.ini設(shè)置文件,修改三行如下:

  1、session.use_cookies

  把這個(gè)的值設(shè)置為1,利用cookie來傳遞sessionid

  2、session.cookie_lifetime

  這個(gè)代表SessionID在客戶端Cookie儲存的時(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ù)器端儲存的時(shí)間,如果超過這個(gè)時(shí)間,那么Session數(shù)據(jù)就自動刪除! 那么我們也把它設(shè)置為99999999。

  就這樣一切ok了,當(dāng)然你不相信的話就測試一下看看——設(shè)置一個(gè)session值過個(gè)10天半個(gè)月的回來看看,如果你的電腦沒有斷電或者宕機(jī),你仍 然可以看見這個(gè)sessionid。

  當(dāng)然也可能你沒有控制服務(wù)器的權(quán)限并不能像我一樣幸運(yùn)的可以修改php.ini設(shè)置,一切依靠我們自己也是有辦法的,當(dāng)然就必須利用到客戶端存儲 cookie了,吧得到的sessionID存儲到客戶端的cookie里面,設(shè)置這個(gè)cookie的值,然后把這個(gè)值傳遞給session_id()這 個(gè)函數(shù),具體做法如下:

  1. session_start();?//?啟動Session? ?
  2. $_SESSION['count'];?//?注冊Session變量Count? ?
  3. isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID?=?session_id();? ?
  4. //?如果設(shè)置了$PHPSESSID,就將SessionID賦值為$PHPSESSID,否則生成SessionID? ?
  5. ? ?
  6. $_SESSION['count']++;?//?變量count加1? ?
  7. setcookie('PHPSESSID',?$PHPSESSID,?time()+3156000);?//?儲存SessionID到Cookie中? ?
  8. echo?$count;?//?顯示Session變量count的值? ?
  9. ?>?

  如果很久以后(多久?你自己看吧)你回來刷新這個(gè)頁面,輸出的數(shù)字比你走的時(shí)候大了1那就對了!如果大了很多,估計(jì)是誰動你電腦了,這次測試就不準(zhǔn) 確了,呵呵……重新出去一會兒吧!

  注意:在setcookie一行中的’PHPSESSID’并不是一定的,如果你遇到有個(gè)患有修改狂疾病的網(wǎng)管員,他可能對其做了 修改,最好的方法是用phpinfo()這個(gè)函數(shù)看看,確認(rèn)一下session.name一項(xiàng)的值,比較科學(xué)。

關(guān)鍵詞標(biāo)簽:PHP,session

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 plsql developer怎么連接數(shù)據(jù)庫-plsql developer連接數(shù)據(jù)庫方法 plsql developer怎么連接數(shù)據(jù)庫-plsql developer連接數(shù)據(jù)庫方法 2021年最好用的10款php開發(fā)工具推薦 2021年最好用的10款php開發(fā)工具推薦 php利用淘寶IP庫獲取用戶ip地理位置 php利用淘寶IP庫獲取用戶ip地理位置 在 PHP 中使用命令行工具 在 PHP 中使用命令行工具

相關(guān)下載

    人氣排行 詳解ucenter原理及第三方應(yīng)用程序整合思路、方法 plsql developer怎么連接數(shù)據(jù)庫-plsql developer連接數(shù)據(jù)庫方法 PHP中防止SQL注入攻擊 PHP會話Session的具體使用方法解析 PHP運(yùn)行出現(xiàn)Notice : Use of undefined constant 的解決辦法 PHP如何清空mySQL數(shù)據(jù)庫 CakePHP程序員必須知道的21條技巧 PHP采集圖片實(shí)例(PHP采集)