導航:首頁 > 編程語言 > php定時刪除session

php定時刪除session

發布時間:2025-09-08 13:43:42

❶ 在php中怎麼實現在登錄頁A登錄用session保存用戶名在主頁B顯示!當關閉頁面或者注銷登陸才銷毀session!

關閉頁面是無法銷毀session的,
首先session是有一個保存期限的,默認好像是多少分鍾來著忘記了,是可以自己設置,
比如session是30分鍾,你在15分鍾後訪問網站,伺服器檢測到你是活動的,就給你session重置30分鍾,如果你在31分鍾訪問那麼 超時了,伺服器在30分鍾時已經把你以前的給丟棄了,所以你是一個新的用戶,表現的現象就是有些網頁你登陸後 直接點擊右上角X 掉後馬上在打開瀏覽器輸入 剛剛登陸的網站你會發現你還是登陸狀態..
在有比如你登陸了一個網頁,長時間沒有瀏覽過這個網頁那麼,在你下次點擊這個網站鏈接時候,就發現讓你重新登陸..
你直接關閉瀏覽器 一般情況下伺服器是不會馬上知道你已經離開的,
如果網站有注銷按鈕,你點擊後就相當於告訴伺服器你離開了,請把我的賬號給注銷了..

❷ PHP中SESSION的注銷與清除

1、每個頁面都必須開啟session_start()後才能在每個頁面裡面使用session。
2、session_start()初始化session,第一次訪問會生成一個唯一會話ID保存在客戶端(是基於cookie保存的),用戶下次訪問時,session_start()會檢查有沒有會話ID,如果有瀏覽器會帶著這個會話ID過來(通過發送頭文件傳過來的,這個可以用ff瀏覽器看到)來確定客戶端。
3、給於cookie的session會在客戶端保存一個會話ID即session_id,這個可以通過列印cookie看到,這個session_id的鍵值為session_name,
session_id()
==
$_COOKIE[session_name()]
4、如果客戶端禁用了cookie,則必須用url傳遞session_id即給予URL的SESSION
5、注銷SESSION時不能用unset($_SESSION),可以使用$_SESSION
=
array()或則$_SESSION
=
null,正確注銷session的方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//正確的注銷session方法:
//1開啟session
session_start();
//2、清空session信息
$_SESSION
=
array();
//3、清楚客戶端sessionid
if(isset($_COOKIE[session_name()]))
{
setCookie(session_name(),'',time()-3600,'/');
}
//4、徹底銷毀session
session_destroy();
相關欄目
電腦編程
php教程
asp教程
asp.net教程
jsp教程
javascript教程
編程語言綜合
編程開發
ios開發
oracle教程
mysql教程
mssql教程
access教程
安卓軟體開發

❸ 涓轟粈涔堣劇疆php鐨剆ession

涓銆佷粙緇
PHP涓璼ession榛樿よ繃鏈熸椂闂存槸1440S錛岃秴榪囪繖涓鏃墮棿娌℃湁欏甸潰鍒鋒柊鎴栬呯敤鎴峰叧闂浜嗘祻瑙堝櫒錛宻ession灝變細澶辨晥銆
浜屻佽劇疆
session鏂囦歡瀛樺偍鍦ㄦ湇鍔″櫒絝錛岄氳繃淇濆瓨鍦ㄧ敤鎴風鐨凷essionId涓庢湇鍔″櫒榪涜屼氦浜掞紝session鐨勯厤緗鏂囦歡鏄痯hp.ini錛岀浉鍏沖弬鏁板備笅錛
1.session.use_cookies = 1錛岄粯璁1錛屼唬琛⊿essionId閫氳繃cookie鏉ヤ紶閫掞紝鍚﹀垯浼氱敤Query_String
2.session.name = PHPSESSID錛岄粯璁PHPSESSID錛屼唬琛⊿essionID鍌ㄥ瓨鐨勫彉閲忓悕縐幫紝鍙鑳芥槸Cookie錛屼篃鍙鑳芥槸Query_String鏉ヤ紶閫
3.session.cookie_lifetime = 604800錛屾槸SessionID鍦ㄥ㈡埛絝疌ookie鍌ㄥ瓨鐨勬椂闂達紝榛樿ゆ槸0錛屼唬琛ㄦ祻瑙堝櫒涓鍏抽棴SessionID絝嬪嵆澶辨晥錛岃繖閲屾垜璁劇疆浜7澶
4.session.gc_maxlifetime = 604800錛岄粯璁ゆ槸1440錛屼唬琛╯ession鍦ㄦ湇鍔″櫒絝淇濈暀鐨勬椂闂達紝瓚呰繃榪欎釜鏃墮棿灝變細澶辨晥銆傝繖閲屾垜璁劇疆浜7澶╋紝涓庡㈡埛絝鐨刢ookie鏈夋晥鏃墮棿涓鑷
涓夈佸叾浠栨儏鍐
涓鑸鎯呭喌涓嬫妸榪欏洓涓鍊艱劇疆濂戒箣鍚庡氨鍙浠ユ洿鏀箂ession鐨勬湁鏁堟湡浜嗭紝浣嗘槸褰撳氫釜絝欑偣鐨剆ession鏂囦歡閮戒繚瀛樺湪鍏鐢ㄤ復鏃惰礬寰勬椂錛岀敱浜巔hp鐨凣C錛圙arbage Collector錛夋満鍒訛紝鏌愪釜絝欑偣鍚鍔ㄥ瀮鍦懼洖鏀舵満鍒訛紝閮戒細鎶婂叕鐢ㄤ復鏃舵枃浠剁洰褰曚笅鐨勬枃浠跺叏閮ㄦ竻闄わ紝榪欏氨浼氬艱嚧session澶辨晥錛岃В鍐蟲柟娉曞氨鏄鏇存敼php.ini閲宻ession鏂囦歡鐨勪繚瀛樿礬寰勶細
session.save_path=鈥樹綘鐨勮礬寰勨欙紱

❹ 如何設置session的生存時間

如何修改SESSION的生存時間

我們來手動設置 Session 的生存期:

<?php
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
其實 Session 還提供了一個函數 session_set_cookie_params(); 來設置 Session 的生存期的,該函數必須在 session_start() 函數調用之前調用:
<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
如果客戶端使用 IE 6.0 , session_set_cookie_params(); 函數設置 Cookie 會有些問題,所以我們還是手動調用 setcookie 函數來創建 cookie。
php中session過期時間設置
網上很多人給出了解答:修改php配置文件中的session.gc_maxlifetime。如果想了解更多session回收機制,繼續閱讀。(本文環境php5.2)

概述:每一次php請求,會有1/100的概率(默認值)觸發「session回收」。如果「session回收」發生,那就會檢查/tmp/sess_*的文件,如果最後的修改時間到現在超過了1440秒(gc_maxlifetime的值),就將其刪除,意味著這些session過期失效。

1. session在server端(一般是Apache with PHP mole)如何存在的?

默認的,php會將session保存在/tmp目錄下,文件名為這個樣子:sess_。每一個文件對應了一個session(會話)。

more /tmp/sess_
username|s:9:」jiangfeng」;admin|s:1:」0″;
#變數名|類型:長度:值
刪除這里的session文件,就表示對應的session失效了。

2. session在client端(一般是瀏覽器)如何存在的?

session在瀏覽器端,只需要保存session
ID(由server端生成的唯一ID)就可以了。有兩種保存方式:在cookie中、在url裡面。如果cookie中保存session
ID,就可以看到瀏覽器的cookie中有一個PHPSESID變數。如果是URL傳遞的,就可以看到形如:
index.php?PHPSESID=的URL。(在server端通過session.use_cookies來控制使用哪一種方式)

3. 在server端,php如何判斷session文件是否過期?

如果」最後的修改時間」到」現在」超過了gc_maxlifetime(默認是1440)秒,這個session文件就被認為是過期了,在下一次session回收的時候,如果這個文件仍然沒有被更改過,這個session文件就會被刪除(session就過期了)。

簡單的說,如果我登錄到某網站,如果在1440秒(默認值)內沒有操作過,那麼對應的session就認為是過期了。

所以,修改php.ini文件中的gc_maxlifetime變數就可以延長session的過期時間了:(例如,我們把過期時間修改為86400秒)

session.gc_maxlifetime = 86400
然後,重啟你的web服務(一般是apache)就可以了。

注意:php5裡面session過期使用了回收機制。這里設置時間為86400秒,如果session在86400秒內沒有被修改過,那麼在下一次「回收」時才真的被刪除。

3. session「回收」何時發生?

默認情況下,每一次php請求,就會有1/100的概率發生回收,所以可能簡單的理解為「每100次php請求就有一次回收發生」。這個概率是通過以下參數控制的

#概率是gc_probability/gc_divisor
session.gc_probability = 1
session.gc_divisor = 100
注意1:假設這種情況gc_maxlifetime=120,如果某個session文件最後修改時間是120秒之前,那麼在下一次回收(1/100的概率)發生前,這個session仍然是有效的。

注意2:如果你的session使用session.save_path中使用別的地方保存session,session回收機制有可能不會自動處理過期session文件。這時需要定時手動(或者crontab)的刪除過期的session:cd
/path/to/sessions; find -cmin +24 | xargs rm

4. 一些特殊情況

因為回收機制會檢查文件的「最後修改時間」,所以如果某個會話是活躍的,但是session的內容沒有改變過,那麼對應的session文件也就沒有改變過,回收機制會認為這是一個長時間沒有活躍的session而將其刪除。這是我們不願看到的,可以通過增加如下的簡單代碼解決這個問題:

<?php
if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60)
$_SESSION['last_access'] = time();
?>
代碼會每隔60秒,嘗試修改修改一次session。

總結:如果想修改session過期時間,修改變數gc_maxlifetime就可以了。php5的session採用被動的回收機制(garbage
collection)。過期的session文件不會自己消失,而是通過觸發「回收」來處理過期的session。

❺ php關閉瀏覽器如何使session失效

session 在伺服器上的管理,通常以文件形式保存,文件名就是 session id。

瀏覽器關閉的過程中,伺服器上的 session 數據並沒有被銷毀,因為這時候沒有發送任何請求,伺服器那邊不會知道是否要銷毀 session 的數據。瀏覽器再次啟動重新打開頁面的時候,發送的 session id 還是原來的 id,雖然你說沒用到 cookie,但是這個 id 就是通過 cookie 發送的。

你可以看看 php.ini 的設置,主要看這兩項:

session.gc_maxlifetime
session.cookie_lifetime

❻ php中session_destroy()的作用

Session_destroy()銷毀當前會話中的所有數據,但不重置與當前會話關聯的全局變數,也不重置會話cookie。如果需要再次使用會話變數,則必須再次調用session_start()函數。

為了完全銷毀會話,例如當用戶注銷時,必須同時重置會話ID。如果會話ID是由cookie傳遞的,那麼還會調用setcookie()函數來刪除客戶機的會話cookie。

使用方法:

1.要在PHP中使用會話,首先需要啟動會話。要啟動會話,您需要使用PHP的內置函數session_start(),如圖所示。

❼ PHP中session變數的銷毀

1.何為session?
相當於一個客戶端(可以是瀏覽器、app、ftp等其他,而且同一個瀏覽器多開幾個又算是不同的客戶端)對伺服器的一個訪問,這個期間伺服器為此建立一個唯一的標示(session_id
session_name),其實也就是一個數組Array(),Session的開始和結束並不以業務上的輸入用戶名密碼開始,也不以關閉瀏覽器和網頁刷新而結束
2.session變數的銷毀
程序代碼
<?php
session_unset();
session_destroy();
?>
session_unset()
釋放當前在內存中已經創建的所有$_SESSION變數,但不刪除session文件以及不釋放對應的session
id
session_destroy()
刪除當前用戶對應的session文件以及釋放session
id,內存中的$_SESSION變數內容依然保留
【注意】:
刪除session方法:
1、unset
($_SESSION['xxx'])
刪除單個session,unset($_SESSION['xxx'])
用來unregister一個已注冊的session變數。其作用和session_unregister()相同。session_unregister()在PHP5中不再使用,可將之打入冷宮。
unset($_SESSION)
此函數千萬不可使用,它會將全局變數$_SESSION銷毀,而且還沒有可行的辦法將其恢復。用戶也不再可以注冊$_session變數。
2、$_SESSION=array()
刪除多個session
3、session_destroy()結束當前的會話,並清空會話中的所有資源。。該函數不會unset(釋放)和當前session相關的全局變數(globalvariables),也不會刪除客戶端的session
cookie.PHP默認的session是基於cookie的,如果要刪除cookie的話,必須藉助setcookie()函數。
返回值:布爾值。
功能說明:這個函數結束當前的session,此函數沒有參數,且返回值均為true
session_unset()
如果使用了$_session,則該函數不再起作用。由於PHP5必定要使用$_session,所以此函數可以打入冷宮了。
可以得出刪除session的步驟:
①session_start()
②$_SESSION=array()/unset($_session['xxx'])
③session_destroy()

❽ PHP中,怎麼才能關閉瀏覽器後自動銷毀session

php的session過期機制是由這三個配置決定:
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440

過期時間是針對session文件最新修改時間的,如果最新修改超過了gc_maxlifetime的時間,gc會有1/1000分之一的概率回收(刪掉session文件)

而每次瀏覽器請求,都是cookie中帶了PHPSESSID去伺服器中匹配session的
http請求是無狀態請求,你一次請求後得到了響應,再沒有其他請求的話,基本伺服器跟你瀏覽器沒啥關系了,所以你關閉了瀏覽器,不可能去命令伺服器主動銷毀session

要想實現你要的效果,只能設置cookie的過期時間了,關閉會話後cookie過期(一般不設過期時間,默認是關閉瀏覽器失效),這樣,你再打開,就要重新登錄,不要關心session的過期了,讓gc自己回收把。

閱讀全文

與php定時刪除session相關的資料

熱點內容
雲耀雲伺服器中文 瀏覽:504
p2p借貸服務行業白皮書pdf 瀏覽:880
伺服器lp地址是什麼意思 瀏覽:255
單片機打分器 瀏覽:837
康德道德學絕對命令 瀏覽:206
絕地求生如何看自己在哪個伺服器 瀏覽:965
富士通單片機程序下載軟體 瀏覽:857
帶平方的運演算法則 瀏覽:941
姜振宇微表情pdf 瀏覽:388
如何看方舟伺服器的倍率 瀏覽:72
招行app如何設置退出登錄 瀏覽:429
程序員發文章一般多久 瀏覽:859
什麼是單片機定時器 瀏覽:90
無線路由器怎麼當伺服器 瀏覽:936
linux的and命令 瀏覽:164
做程序員入黨 瀏覽:544
php定時刪除session 瀏覽:605
什麼的命令填空 瀏覽:383
命令方塊做的坐騎模組 瀏覽:188
安卓rsa公鑰加密 瀏覽:777