首頁  >  文章  >  後端開發  >  COOKIE和SESSION關係和區別等

COOKIE和SESSION關係和區別等

WBOY
WBOY原創
2016-08-08 09:20:46739瀏覽

一、cookie介紹

cookie 常用於辨識使用者。 cookie 是伺服器留在使用者電腦中的小檔案。每當相同的電腦透過瀏覽器請求頁面時,它同時會發送 cookie。透過 PHP,您能夠建立並取回 cookie 的值。

1、設定Cookie

PHP用SetCookie函數來設定Cookie。

SetCookie函數定義了一個Cookie,並且把它附加在HTTP頭的後面,SetCookie函數的原型如下:
int SetCookie(string name, string value, int expire, string path, string stringd );

參數說明:cookie名稱,cookie值,過期時間(int),有效路徑,有限域名,https傳遞才有效

注意:當前設定的Cookie不是立即生效的,而是要等到下一個頁面時才能看到.這是由於在設定的這個頁面裡Cookie由伺服器傳遞給客戶瀏覽器,在下一個頁面瀏覽器才能把Cookie從客戶的機器裡取出傳回伺服器的原因。

使用範例:

普通使用:

setcookie('name','PHP淮北

setcookie('name','PHP淮北');淮北',time()+24*60*60);//1day
Cookie是面向路徑的,預設儲存在當前文件下,如果沒有設定路徑,不同檔案下的cookie預設會儲存在不同資料夾下,如圖:預設保存在mytest資料夾下

sss

2、接收和處理Cookie

用戶端與服務端的通訊協定是http。而PHP透過http取得使用者資料慣用的三種方法分別是:POST方法、GET方法還有Cookie。而PHP預設傳遞方法正是Cookie,也是最佳方法。

例如設定一個名為MyCookier的Cookie,PHP會自動從WEB伺服器接收的HTTP頭裡把它分析出來,並形成一個與普通變數一樣的變量,名為$myCookie,這個變數的值就是Cookie的值

3,刪除Cookie

 

要刪除一個已經存在的Cookie,有兩個方法:

ookieookie

name的Cookie將被從關係戶機上刪除;例如:setcookie('name','');
另一個辦法是設定Cookie的失效時間為time()或time()-1,那麼這個Cookie在這個頁面的瀏覽完之後就被刪除了(其實是失效了)。 例如:setcookie('name','PHP淮北',time()-24*60*60);
要注意的是,當一個Cookie被刪除時,它的值在當前頁在仍然有效的。
使用Cookie的注意事項:

首先是必須在HTML檔案的內容輸出之前設定(Cookie是HTTP協定頭的一部分,用於瀏覽器和伺服器之間傳遞訊息,所以必須在任何屬於HTML檔案本身的內容輸出之前呼叫Cookie函數。
可以防止header提示錯誤);

不同的瀏覽器對Cookie的處理機制不一樣

cookie限制是在客戶端的。一個瀏覽器能創建的Cookie數量最多為30個,且每個不能超過4KB,每個WEB站點能設定的Cookie總數不能超過20個。

目前設定的Cookie不是立即生效的,而是要等到下一個頁面才能看到

二、session介紹

session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來保存訊息,每一個網站訪客都會被分配給一個唯一的標誌符,即會話ID ,它的存放形式無非兩種:要么經過url傳遞,要么保存在客戶端的Cookies裡.當然,你也可以將Session保存到數據庫裡,這樣會更安全,但效率方面會有所下降.url方式傳遞安全性肯定太差,PHP的會話機制是透過設定Cookie,在Cookie中保存會話id(Session ID),在伺服器端會產生session檔案,與使用者進行關聯,Web應用程式儲存與這些Session相關的資料,並在各頁間進行傳遞.

PHP相關函數

在PHP中有關Session的函數比較多,不過我們最常用到的也就這麼幾個函數:

:啟用session機制,在需要用到session的程式檔的最開始呼叫它.

session_register():註冊session變數

session_unregister(): 刪除session變數(一個一個詞

(): 判斷session變數是否註冊

session_distroy(): 銷毀所有session變數(所有session變數銷毀,包含檔案)

需要注意以下幾個面向:必須在程式最開始執行,在其前面不能有任何輸出內容,否則

就會出現「Warning:Cannot send session cookie - headers already

sent"類似這樣的警告訊息.

sent"類似這樣的警告訊息.

2.函數session_register()用於註冊要保存在session中的相關變數,其用法如下:

$val = "session value";

$val = "session value"; );

?>

val即為要註冊的session變數名,在註冊時一定不要加上"$"符號,只寫其變數名稱即可.

3.函數session_3. ()與上面函數用法完全相同,但函數相反,上面函數是註冊

session變數,而其則是刪除指定的session變數.

4.函數session_is_registered()用於判斷session變數是否註冊.

5.函數session_destroy()主要用於在系統註銷和退出時,銷毀所有的session變量,它沒有參數,直接調用即可。

Session與PHP.ini的關聯配置

1,session.save_handler = file

用於讀取/回寫session資料的方式,預設是files。它會讓PHP的session管理函數使用指定的文字檔案儲存session資料

2,session.save_path = “/xammp/temp/”

 

,到別的目錄,但是指定目錄必須要有httpd守護程式屬主(例如apache或www等)寫權限,否則無法回存session資料。它也可以寫成這樣session.save_path = “N;/path” 其中N是整數。這樣使得不是所有的session檔案都保存在同一個目錄中,而是分散在不同目錄中。這對於伺服器處理大量session檔案是很有幫助的。 (註:目錄需要自己手動建立)

3,session.auto_start = 0

 

如果啟用該選項,用戶的每次要求都會初始化session。不建議使用,最好透過session_start()顯示地初始化session。

 

QQ截圖20111115173320

上圖:左側是儲存在xammp/tmp/

上圖:左側是儲存在xammp/tmp/

echo serialize($_SESSION['name']);//序列化

第二行是列印session值

*****************其中檔案名稱是session-name,內容是PHP序列化的格式

來源:http://www.cnblogs.com/phphuaibei/archive/2011/11/15/2250082.html

以上就介紹了COOKIE和SESSION關係和差異等,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn