cookie和會話(一)

2021-08-27 07:23:52 字數 3560 閱讀 1857

cookie解決了跟蹤各個訪問者或使用者,伺服器利用cookie這種機制將少量的資訊隨著響應傳送到客戶機。這些資訊由名稱和值組成,都是最為文字字串傳送的。當客戶機對伺服器傳送的另乙個請求時,它將從這個伺服器收到的任何cookie隨著新的請求一起傳送回去。

1:基本操作------ 設定和訪問cookie

1> 設定:  

setcookie(cookie_name,cookie_value);

這個函式對提供給它的cookie值進行轉移,以便可以安全地作為http響應訊息的一部分傳送。只要瀏覽器開著cookie就會一直存在,但是只要瀏覽器關閉cookie就會被刪除。 呼叫這個函式的乙個問題是與header一樣,在呼叫這個函式之前不能有任何輸出。因為cookie是作為響應頭的一部分傳送的。

2>訪問:

使用$_cookie超級全域性變數來訪問

php只用隨乙個頁面請求傳送的cookie填充$_cookie陣列,因此,如果在任何呼叫setcookie('cookie_name','cookie_value')執行以下**

setcookie('cookie_name','cookie_value');echo $_cookie['cookie_name'];就會收到乙個警告,指出cookie_name鍵還沒有設定。同樣在**中設定新的cookie值後,$_cookie還沒有來得及進行更新新的值,只會用隨著請求接收到的cookie值來填充$_cookie這個值。

2:cookie如何工作

伺服器通過隨著響應傳送乙個set_cookie頭,在客戶機中設定乙個cookie。(多個cookie需要設定多個cookie頭。)儘管在響應中多個cookie是用不同的set_cookie頭髮送的,但是在請求中它們在乙個單一的cookie頭中一起傳送回伺服器,各個cookie名/值對由空格分隔。

connection	keep-alive

content-length 0

content-type text/html

date wed, 05 dec 2012 14:15:35 gmt

keep-alive timeout=5, max=100

server apache/2.2.21 (win32) mod_ssl/2.2.21 openssl/1.0.0e php/5.3.8 mod_perl/2.0.4 perl/v5.10.1

set-cookie mysite=1234

x-powered-by php/5.3.8

connection	keep-alive

content-length 0

content-type text/html

date wed, 05 dec 2012 14:21:25 gmt

keep-alive timeout=5, max=100

server apache/2.2.21 (win32) mod_ssl/2.2.21 openssl/1.0.0e php/5.3.8 mod_perl/2.0.4 perl/v5.10.1

set-cookie user=jcyzone pwd=81dc9bdb52d04dc20036dbd8313ed055

x-powered-by php/5.3.8

3:控制cookie的有效性

setcookie函式最多接收六個引數

]]]]]] 後四個。引數是用來控制和限制cookie的可用性。

1>expire引數可以控制cookie的有效期,eg:setcookie('one_hour','still good',time()+3600);在cookie過期之後,web瀏覽器就不再將它隨著請求一起傳送回伺服器。將這個引數設定為0,就表示這個應該被認為是乙個會話cookie(session cookie)。它儲存在記憶體中,而不是硬碟上,而且只有在使用者正在進行瀏覽時它才是有效的。在使用者關閉web瀏覽器之後,cookie值就消失了。( 注意:現在大多數瀏覽器是多執行緒的,每乙個新的瀏覽器視窗都是同乙個主瀏覽器程序中的乙個新的執行緒。這可以使web瀏覽器快一點並且共享許多資源,比如記憶體。因此,即使關閉了乙個會話cookie及相關聯視窗,但是同乙個瀏覽器程序的其他視窗很可能仍然在記憶體中儲存這這個cookie,因此關閉所有瀏覽器視窗才能確保cookie確實消失了。)

2>path引數可以限制這cookie對那些頁面是有效的。例如將路徑設定為'/',那麼這個cookie對於站點所有頁面都是有效的;但是如果將它設定為'/admin',那麼只對站點上url以/admin開頭的頁面有效。如果沒有指定,那麼預設是這個cookie時所在的目錄。

3>domain引數可以限制或擴充套件這個cookie對那些機器有效。在預設的情況下,它對傳送它的伺服器有效。但是如果許多伺服器共同承擔web應用程式負載,這些機器的名稱都是www.example.com的形式,那麼可以將引數設定為『.example.com』這意味著對這個域中的任何機器有效。

4>最後secure引數設定為1,那麼表示cookie只在https連線上有效。預設值0表示在安全連線和不安全連線都有效,但是,這個引數不會改變cookie在使用者計算機上作為明文儲存的事實。

4:刪除cookie

有時候,可能不再想要乙個cookie,希望刪除它。乙個辦法就是讓他在客戶機上過期,

setcookie('cookie_name','cookie_value',time()-3600);這樣客戶機意識到已經過期,讓程式把它清理掉。

5:cookie陣列

php有一種方便的機制,可以通過它將陣列和cookie聯絡起來

example:

setcookie('userinfo[name]',$_post['name']);

setcookie('userinfo[address]',$_post['address']);

setcookie('userinfo[birth_date]',$_post['birth_date']);

在下一次訪問cookie就可以訪問如下

$name = $_cookie['userinfo']['name'];

$address = $_cookie['userinfo'][address];

$birth_date = $_cookie['userinfo']['birth_date'];

6:cookie應用

知道把什麼放在裡面,儘管cookie是一種可以將資訊與特定客戶機關聯在一起非常方便,但是它有許多缺點,它以不安全的明文格式在網際網路上傳輸在客戶機上儲存,cookie包含的資料量有限制(常常只有4kb)。

一般規則是不要將太多的資料放在cookie中,而是將它作為標緻來幫助我們管理使用者。如果希望在使用者界上儲存確保它是無害的,不構成安全威脅。

1>個性化方式歡迎重返站點要求他登陸2>使用者的個人設定

作用 和會話期 程序組 程序組和會話

程序組 程序組是指乙個或多個程序的集合。通常與乙個作業相關聯,可以接收來自同一終端的訊號。每個程序組有乙個唯一的程序組id,它類似於程序id,是乙個正整數 其實就是組長程序的程序id 可以通過函式獲得 include pid t getpgrp void 程序組都有乙個組長,組長程序的標識是其程序組...

關於程序和會話

oracle例項有兩種型別 單程序例項和多程序例項。單程序oracle 又稱單使用者oracle 是一種資料庫系統,乙個程序執行全部oracle 由於oracle部分和客戶應用程式不能分別以程序執行,所以oracle的 和使用者的資料庫應用是單個程序執行。在單程序環境下的oracle 例項,僅允許乙...

PHP Cookie和會話管理

建立cookie setcookie 名稱,cookie值,到日期,路徑,網域名稱,secure setcookie 函式必須位於 標籤之前 讀取cookie 使用 cookie 變數取回 cookie 的值 setcookie 名稱,cookie值,到日期,路徑,網域名稱,secure setco...