PHPSESSID 到期問題

來源:互聯網
上載者:User
停留N分鐘,重新整理PHPSESSID變了,登陸的使用者也就自然退出了

現在問題是找不到導致PHPSESSID變的原因
session.cookie_lifetime = 0
ps:

ini_set('session.use_cookies', 1);//使用COOKIE儲存SESSIONID的方式ini_set('session.cookie_domain', 'abc.com');

回複討論(解決方案)

用的thinkphp 架構 3.23

<?php'SESSION_OPTIONS'=>array('type'=> 'db',//session採用資料庫儲存'expire'=>7200,//session到期時間,如果不設就是php.ini中設定的預設值  ),'SESSION_TABLE'=>'v4_session', //必須設定成這樣,如果不加首碼就找不到資料表,這個需要注意?>

session一定要用session_set_save_handler重寫.
其實你設定到期時間一年後,但是其他沒有儲存為一年後的使用者還會觸發session的gc,從而強制回收你的session.

兩種方法重寫:
1. 儲存redis,mysql等資料庫, 到期時間你自己控制.
2. 隱藏檔,我的技巧是強制修改session檔案的時間為未來的時間,這樣其他使用者觸發gc後就沒法回收你的session檔案了.


存的資料,session是跟隨cookie的,問題是cookie這邊sessid到期換掉了,而不是session到期

session.gc_maxlifetime = 1440; 指定最後一次訪問後的 1440 秒失效
但是否真的失效,取決於
session.gc_probability 和 session.gc_pisor 比值(失效機率)

對於 thinkphp,你有 'expire'=>7200
那麼應在最後一次訪問的 7200 秒(2小時)後失效
如果不是這樣,那就放棄 thinkphp

很程式沒關係,程式存到資料庫的都是正常的。7200是有效
是因為PHPSESSID 值失效(a變b),a在資料庫裡是存在,但b是不存在的,所以相當導致使用者的整個session失效

伺服器上session失效,網頁重新整理當然重新分配了一個sessionid啊
session.cookie_lifetime=0指的是在瀏覽器關閉時刪除cookie,除非手動刪或者被其他軟體強清了

不知道對不對,PHPSESSID 是根據cookie傳到用戶端,用來判斷使用者的唯一性,如果cookie設定0秒,會自動清空,用戶端沒有phpsessid,服務端當然會重新分配一個,所以就登出了。


伺服器session沒有失效,存的資料庫。。。
是因為存在coookie 的 phpsessid 值變了,而這個phpsessid在資料庫裡是沒資料的

對的,問題是系統配置是2個小時,有時候10分鐘有時候1個小時PHPSESSID就被重新分配了(同一個頁面一直重新整理)
找不出原因



session和cookies那點事說難不難, 說簡單也不簡單, 整到完美磨合,倆合作完美無間要仔細研究下,不過封裝好以後就省事了.

你看看你是不是session_id($_COOKIES['sess_id']);沒有這樣接管.
還有cookies的範圍問題,作用路徑問題,查查setcookie參數你就知道了...

正常不會這樣,既然tp設定了7200實效,根據session.gc處理,只會在7200秒後執行清除

你可以檢查是否有其他程式導致session實效。

之前做法是,把session儲存在cookies,如果判斷session失效但cookie沒有實效,則把cookie複製入session處理。

已經找出問題

<?php     function session($name='',$value='') {                ini_set('session.gc_maxlifetime',   $name['expire']);                //ini_set('session.cookie_lifetime',  $name['expire']);}?>

是TP的這裡重寫了session存在cookie的生存周期導致sessionid在cookie的存活周期是我們設定的那個參數

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.