『壹』 涓轟粈涔堣劇疆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=鈥樹綘鐨勮礬寰勨欙紱
『貳』 php session是怎樣生成的
session是在伺服器端保持用戶會話數據的一種方法,對應的cookie是在客戶端保持用戶數據。HTTP協議是一種無狀態協議,伺服器響應完之後就失去了與瀏覽器的聯系,最早,Netscape將cookie引入瀏覽器,使得數據可以客戶端跨頁面交換,那麼伺服器是如何記住眾多用戶的會話數據呢?
首先要將客戶端和伺服器端建立一一聯系,每個客戶端都得有一個唯一標識,這樣伺服器才能識別出來。建議唯一標識的方法有兩種:cookie或者通過GET方式指定。默認配置的PHP使用session的時會建立一個名叫」PHPSESSID」的cookie(可以通過php.ini修改session.name值指定),如果客戶端禁用cookie,你也可以指定通過GET方式把session id傳到伺服器(修改php.ini中session.use_trans_sid等參數)。
我們查看伺服器端session.save_path目錄會發現很多類似sess_vv9lpgf0nmkurgvkba1vbvj915這樣的文件,這個其實就是session id 「vv9lpgf0nmkurgvkba1vbvj915″對應的數據。真相就在這里,客戶端將session id傳遞到伺服器,伺服器根據session id找到對應的文件,讀取的時候對文件內容進行反序列化就得到session的值,保存的時候先序列化再寫入。
事實就是這樣,所以如果伺服器不支持session或者你想自定義session,完全可以DIY,通過PHP的uniqid生成永不重復的session id,然後找個地方存儲session的內容即可,你也可以學flickr把session存儲在MySQL資料庫中。
『叄』 php中如何使用SESSION
1、在php中使用session,首先要啟動session會話,啟動session會話要使用php內置函數session_start(),如圖所示。
『肆』 php在開啟session_start()後刷新頁面_COOKIE[PHPSESSID]的值會變化,不是有唯一的值嗎
在PHP中,開啟session_start後,$_COOKIE[PHPSESSID]的值在正常情況下不會每次刷新頁面都變化,它應該是唯一的,並且在會話期間保持不變。以下是對這一點的詳細解釋:
唯一性:
不變性:
會話失效:
異常情況:
綜上所述,正常情況下,在PHP中開啟session_start後,$_COOKIE[PHPSESSID]的值應該是唯一的,並且在會話期間保持不變。如果出現異常情況,需要檢查PHP的配置和代碼以找出原因。