第九堂課 cookie與會話控制

第9堂課    cookie與會話控制


session

cookie和session是數據的臨時檔案館,cookie將數據存儲在客戶端,實現數據持久存儲,session將數據存儲在服務器端,保證數據在程序的單次訪問中持續有效。有了cookie和session就可以解決httpweb協議的無狀態問題,實現數據在不同頁面之間的傳遞和數據在客戶端的持久存儲。

session==會話

在計算機專業屬語中,session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從註冊進入系統到註銷退出系統之間所經歷的時間。


創建會話: 啓動會話,註冊會話,使用會話,刪除會話

php啓動會話有兩種方式:
1.是使用session_start()函數
session_start() 使用這個函數前,瀏覽器不能有任何輸出,
2.使用session_register()函數爲會話登錄一個變量來隱含地啓動會話,
使用session_register(string name) name是指變量的名稱。使用這個函數,要將php.ini文件中的register_globals選項設置成on


註冊會話:會話變量被啓動後,全部保存在數組$_SESSION中,通過數組$_SESSION創建一個會話變量很容易,只要直接給該數組添加一個元素即可。

使用會話

刪除會話:
刪除單個會話,刪除會話變量的方法同刪除數組中指定元素相同,都可以通過unset()函數完成,unset($_SESSION['user'])。
如果通過unset()函數一次註銷整個數組(unset($_SESSION))那麼會禁止整個會話功能。而且沒有辦法恢復,用戶也不能在註冊$_SESSION變量。

所以,要是刪除多個會話,或註銷所有的會話變量,使用以下兩種方式:
1.刪除多個會話:將一個空的數組賦值給$_SESSION,如$_SESSION=array()
2.結束當前會話,:如果整個會話結束,就可以使用session_destroy()函數結束當前的會話,語法session_destroy(), 這樣就清空會話中的所有資源,撤底銷燬session


配置php會話:

在客戶端支持cookie的前提下,控制session的生命週期:一是通過session來完成,別一個種是通過cookie來完成

基於session的生命週期:有兩種方法,一是應用session_set_cookie_params()函數,二是應用setcookie()函數。

session_set_Cookie_params() 該函數的功能是設置session和cookie的參數,其語法如下:session_set_cookie_params(cookie的生存期,[cookie的有效路徑[cookie的效城[cookie在安全的範圍內被髮送]]])

session_set_Cookie_params()函數必須在session_start()函數之前調用。

setCookie()函數的主要職責是創建cookie。但同樣可以控制session的過期時間。 

以上都是在客戶端支持cookie的前提下,控制session的生命週期,一旦客戶端禁止cookie,那麼session變量就不能夠在頁面間傳遞,解決辦法4種:
1.通知客戶打開cookie
2.php.ini文件中session_use_trans_sid=1或者編譯時打開-enables-trans-sid選項,讓php自動跨頁面傳遞session_id
3.以GET或post方式,通過表單元素傳遞SESSION_ID
4.通過文件或者數據庫傳遞SESSION_ID


會話的高級應用

如果將session保存在,session的臨時文件,或數據庫,需要使用php中的session_save_path()函數,他是用來取的或者重新配置當前session的存儲路徑。 session_save_path([string path]) path參數表示重新設置session的存儲路徑,如果不設置參數,表示直接獲取當前的session的存儲路徑。


session緩存 : 是指將網頁中的內容臨時存儲到客戶端ie的文件夾下。

1.緩存函數session_cache_limiter([設置緩存的方式])
2.緩存時間函數session_cache_expire([設置session的過期時間])   單位分鐘,默認過期時間180分鐘

  還有這兩個函數必須在session_start()函數前使用。

session數據庫存儲,將session_ID存儲於數據庫中操作:

session_set_save_handler() 參數有:找到存儲路徑,關閉數據庫,讀取session鍵值,key對應session_id,和對應的變量,註銷session對應的session鍵值,清除過期session記錄。



cookie

cookie是一種在遠程客戶端存儲數據並以此來跟蹤和識別用戶的機制,簡單說就是web服務器暫時存儲在用戶硬盤上的一個文本文件,並隨後被web瀏覽器讀取。當在次訪問web網站時,網站通過讀取cookie文件記錄這位訪客的特定信息,從而作出響應。例如,不用輸入用戶名密碼就可以登陸等。。這種文件的格式:用戶名@網站地址[數字]。txt

創建cookie應用的是setcookie()函數,由於cookie是http頭標的組成部分,作爲頭標必須在頁面其他內容之前發送,也必須最先輸出,所以setcookie()函數之前不能有任何內容輸出。

setcookie(名稱[值,過期時間,cookie在服務器的路徑,有效域名,是否指向安全https])



訪問cookie  在php中應用全局數組$_cookie[]讀取客戶端cookie的值,$_cookie是經由http cooies方法提交至腳本的變量。

刪除cookie   有兩種方法:1.使用setcookie()函數,另一種就是在客戶端手動刪除  
setcookie()刪除cookie只需將第二個參數設置成空,將第3個參數過期時間設置小於系統時間就可以。例:setCookie("mr","",time()-1);





複習:

1.什麼是session和cookie,他的作用是什麼,他們有什麼區別
2.session怎麼使用:啓動會話,註冊會話,使用會話,刪除會話
3.session的生命週期的設置
4.session的高級應用,如存儲在數據庫,和緩存的應用。
5.cookie的使用,創建,訪問,刪除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章