php修改session生存时间,修改session的过期(生存)时间
以下我以php為例,萬變不離其宗,希望對(duì)大家都有用吧。
session與cookie:
了解過兩者的眾所都知道,有些信息保存到cookie,有些出于安全問題就不能直接存到瀏覽器,這就要用到session了。然而對(duì)于瀏覽器,一般都是默認(rèn)20-30分鐘自動(dòng)銷毀或者關(guān)閉瀏覽器就會(huì)銷毀。這顯示是很頭疼的事情,比如我們要實(shí)現(xiàn)用戶登陸功能,關(guān)閉瀏覽器就要重新登陸,這搞什么鬼?所以我們要去試圖改變它們。網(wǎng)上眾說紛紜,你可以選擇去修改默認(rèn)配置文件,如php為例,修改php.ini的函數(shù)。但是染念卻不喜歡修改修改默認(rèn),也在網(wǎng)上看到某些程序員是沒有權(quán)限修改的,所以我們需要做到如何不修改默認(rèn)文件達(dá)到這樣的功能。
我們可能在網(wǎng)上看到這樣的一例子:
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
1.通過cookie的有效時(shí)間來設(shè)置session,我想說,這只是一部分,因?yàn)樵O(shè)置cookie有效期沒有錯(cuò),但是你沒有傳值,怎么達(dá)到修改session的生存時(shí)間呢。
2.雖然在你執(zhí)行了一次后,真的session是24小時(shí)了,但是當(dāng)你關(guān)閉瀏覽器后,再打開,session仍然還是需要你重新輸入,因?yàn)闉g覽器找不到你的session的id啊...
如何設(shè)置session的生存時(shí)間呢?要做的就是把session傳給cookie,由cookie給我們保存:
session_start();
isset($PHPSESSID) ? session_id($PHPSESSID) : $PHPSESSID = session_id();
setcookie('PHPSESSID', $PHPSESSID, time()+86400, "/");PHP session工作原理 以下以cookie傳輸PHPSESSID描述。客戶端請(qǐng)求一個(gè)php的服務(wù)端地址。
服務(wù)端收到請(qǐng)求,此次php腳本中包含session_start()。
服務(wù)端會(huì)生成一個(gè)PHPSESSID。(默認(rèn)session存儲(chǔ)方式為session.save_handler=files,文件形式存儲(chǔ)。生成的session文件名規(guī)則即為sess_PHPSESSID,session文件存在session.save_path中。)
服務(wù)端響應(yīng)首部Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50;
path=/。在客戶端生成一個(gè)cookie保存此PHPSESSID。此時(shí),客戶端的cookie里面包含了PHPSESSID,之后客戶端的每次請(qǐng)求首部Request Headers:Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50。服務(wù)端之后每次接收到客戶端的請(qǐng)求就都能根據(jù)這個(gè)PHPSESSID來找到服務(wù)端的session文件,通過對(duì)這個(gè)session文件的讀寫操作即實(shí)現(xiàn)了session的超全局變量屬性。
如果客戶端禁用了cookie,由于無法使用cookie傳遞PHPSESSID,那么客戶端每次請(qǐng)求,服務(wù)端都會(huì)重新建立一個(gè)session文件,而無法通過通過PHPSESSID來重用session文件,所以session也就失效了。
這種情況可以設(shè)置session.use_trans_sid來傳輸PHPSESSID,具體實(shí)現(xiàn)方式與cookie的區(qū)別就是將PHPSESSID通過HTTP的GET傳輸。每次請(qǐng)求的地址里面都會(huì)補(bǔ)全PHPSESSID參數(shù)”url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50”來實(shí)現(xiàn)。
顧名思義,phpsessid就是當(dāng)前會(huì)話id,session_id($PHPSESSID)達(dá)到當(dāng)前會(huì)話,不然沒存在,就要建立一個(gè)。然后再通過設(shè)置cookie(其實(shí)你打開看cookie,就是有PHPSESSID存在,而我們修改了它的存在時(shí)間而已),這樣我們才能實(shí)現(xiàn)session在你想要的時(shí)間內(nèi)過期,即使瀏覽器關(guān)閉了。
總結(jié)
以上是生活随笔為你收集整理的php修改session生存时间,修改session的过期(生存)时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fm信号表达式_chirp信号表达式
- 下一篇: USB chirp信号测试