1. php如何設置COOKIE控制登錄用戶的過期時間
在php函數裡面setcookie是有時間限制的
setcookie有3個參數
第一個參數是設置的變數名字
第二個參數是變數的值
第三個參數就是有效期了.有效期是以秒來計算的
假設你設置的cookie的有效期是1個小時,那麼從你設置的時間開始,到一個小時候這個cookie都有效.換句話說就是這個cookie變數能夠讀取到的時間是1個小時
一個小時之後這個變數就失效了.不存在了
用php控制用戶過期的話.先設置一個cookie.並設置時間長度.例如1天.每次當用戶訪問的時候都去讀取這個cookie.如果存在.就免驗證.如果不存在就重新驗證.這樣就實現了登陸用戶的過期時間問題.
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); /* 有效期1 小時 */
2. php怎麼設置session的有效時間
如何嚴格限制session在30分鍾後過期!
1.設置客戶端cookie的lifetime為30分鍾;
2.設置session的最大存活周期也為30分鍾;
3.為每個session值加入時間戳,然後在程序調用時進行判斷;
至於為什麼,我們首先來了解下php中session的基本原理:
PHP中的session有效期默認是1440秒(24分鍾),也就是說,客戶端超過24分鍾沒有刷新,當前session就會失效。當然如果用戶關閉了瀏覽器,會話也就結束了,Session自然也不存在了!
大家知道,Session儲存在伺服器端,根據客戶端提供的SessionID來得到這個用戶的文件,然後讀取文件,取得變數的值,SessionID可以使用客戶端的Cookie或者Http1.1協議的
Query_String(就是訪問的URL的「?」後面的部分)來傳送給伺服器,然後伺服器讀取Session的目錄……
要控制Session的生命周期,首先我們需要了解一下php.ini關於Session的相關設置(打開php.ini文件,在「[Session]」部分):
1、session.use_cookies:默認的值是「1」,代表SessionID使用Cookie來傳遞,反之就是使用Query_String來傳遞;
2、session.name:這個就是SessionID儲存的變數名稱,可能是Cookie,也可能是Query_String來傳遞,默認值是「PHPSESSID」;
3、session.cookie_lifetime:這個代表SessionID在客戶端Cookie儲存的時間,默認是0,代表瀏覽器一關閉SessionID就作廢……就是因為這個所以Session不能永久使用!
4、session.gc_maxlifetime:這個是Session數據在伺服器端儲存的時間,如果超過這個時間,那麼Session數據就自動刪除!
還有很多的設置,不過和本文相關的就是這些了,下面開始講如何設置Session的存活周期。
前面說過,伺服器通過SessionID來讀取Session的數據,但是一般瀏覽器傳送的SessionID在瀏覽器關閉後就沒有了,那麼我們只需要人為的設置SessionID並且保存下來,不就可以……
如果你擁有伺服器的操作許可權,那麼設置這個非常非常的簡單,只是需要進行如下的步驟:
1、把「session.use_cookies」設置為1,使用Cookie來儲存SessionID,不過默認就是1,一般不用修改;
2、把「session.cookie_lifetime」改為你需要設置的時間(比如一個小時,就可以設置為3600,以秒為單位);
3、把「session.gc_maxlifetime」設置為和「session.cookie_lifetime」一樣的時間;
在PHP的文檔中明確指出,設定session有效期的參數是session.gc_maxlifetime。可以在php.ini文件中,或者通過ini_set()函數來修改這一參數。問題在於,經過多次測試,修改這個
參數基本不起作用,session有效期仍然保持24分鍾的默認值。
由於PHP的工作機制,它並沒有一個daemon線程,來定時地掃描session信息並判斷其是否失效。當一個有效請求發生時,PHP會根據全局變數
session.gc_probability/session.gc_divisor(同樣可以通過php.ini或者ini_set()函數來修改)的值,來決定是否啟動一個GC(Garbage Collector)。
默認情況下,session.gc_probability = 1,session.gc_divisor =100,也就是說有1%的可能性會啟動GC。GC的工作,就是掃描所有的session信息,用當前時間減去session的最後修
改時間(modified date),同session.gc_maxlifetime參數進行比較,如果生存時間已經超過gc_maxlifetime,就把該session刪除。
到此為止,工作一切正常。那為什麼會發生gc_maxlifetime無效的情況呢?
在默認情況下,session信息會以文本文件的形式,被保存在系統的臨時文件目錄中。在Linux下,這一路徑通常為\tmp,在 Windows下通常為C:\Windows\Temp。當伺服器上有多個PHP應
用時,它們會把自己的session文件都保存在同一個目錄中。同樣地,這些PHP應用也會按一定機率啟動GC,掃描所有的session文件。
問題在於,GC在工作時,並不會區分不同站點的session。舉例言之,站點A的gc_maxlifetime設置為2小時,站點B的 gc_maxlifetime設置為默認的24分鍾。當站點B的GC啟動時,它會掃
描公用的臨時文件目錄,把所有超過24分鍾的session文件全部刪除掉,而不管它們來自於站點A或B。這樣,站點A的gc_maxlifetime設置就形同虛設了。
找到問題所在,解決起來就很簡單了。修改session.save_path參數,或者使用session_save_path()函數,把保存session的目錄指向一個專用的目錄,gc_maxlifetime參數工作正常了。
還有一個問題就是,gc_maxlifetime只能保證session生存的最短時間,並不能夠保存在超過這一時間之後session信息立即會得到刪除。因為GC是按機率啟動的,可能在某一個長時間內
都沒有被啟動,那麼大量的session在超過gc_maxlifetime以後仍然會有效。
解決這個問題的一個方法是,把session.gc_probability/session.gc_divisor的機率提高,如果提到100%,就會徹底解決這個問題,但顯然會對性能造成嚴重的影響。另一個方法是自己
在代碼中判斷當前session的生存時間,如果超出了 gc_maxlifetime,就清空當前session。
3. php 許可權有效期問題
不知道問主還有沒有其他具體的要求,姑且提一個簡單實現方法。
建一個用戶許可權表,設回置好相應的欄位答結構,其中有兩個欄位要求一個用來記錄沖值日期,另一個用來記錄到期的期限或直接為到期的日期。其它欄位省過。當然也可以原來的用戶表上增加欄位,怎麼方便怎麼弄吧。
在用戶登錄時再通過對上述兩個欄位比對運算結果來修改該用戶的許可權或用戶歸屬組。
4. 關於php中session有效期問題
關閉瀏覽器下次再訪問的時候,
存 session id 的 COOKIE 失效。
即使伺服器端 存在 這個 session ,瀏覽器不帶過去,也相當於沒有。
存在伺服器端的session 會自動清理掉。
5. php中session有效期如何設置(用php代碼設置,不是修改配置文件)
在php.ini文件里.有一句是session.gc_maxlifetime,原來是為空的.然後你加上你的時間就可以了.當然可以用ini_set()方法去動態配置...
6. PHP即時cookie有效期時間怎麼設置
回"問題復補充"
PHP手冊上關於setcookie函數的expire參數制有這樣一個解釋
If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).
如果設為0 或者忽略該參數, cookie將在session結束時(關閉瀏覽器時)過期
所以, 如果要寫4,5個參數, 那把第三個設為0就可以了
7. php使用session和加密的cookie保存登錄狀態,如何判斷登錄狀態失效時間
就讀取cookie唄,cookie不存在了就報失效了就好啊
8. php兩周內自動登錄setcookie()有效期沒效果,一直是自動登錄
if($_COOKIE['username]){
setcookie("username",$userid,time()+60);
}
不需要echo來檢測。我沒看到你對setcookie("username",$userid,time()+60); 的條件判斷,這樣一直有cookie的。
ob_start()這個要自己去看,主要意思就是先把你的輸出緩存起來,要輸出的時候再輸出。這樣就可以先處理後再輸出。
9. PHP5.3的Session有效期默認是多少
在php.ini 中搜索找到這句:session.gc_maxlifetime
看看你的這個值就是默認的有效專時間
如下屬:
session.gc_maxlifetime = 1440
表示默認有效時間為1440s
10. 求 PHP 設置管理員帳號session的有效期
你好!
cookie是最好的選擇
session的效果是瀏覽器關閉了才刪除
你如果要這種效果就用cookie
希望對你有所幫助,望採納。