PHP中的session永不到期的解決思路及實現方法分享

來源:互聯網
上載者:User

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

  客戶就是上帝,唯一的上帝。於是上峰要求我們能夠實現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一項的值,比較科學。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.