PHP setcookie 首次儲存不上值

2021-08-25 14:50:21 字數 1328 閱讀 6138

首先編寫以下簡單的**:

複製** **如下:

<?php

setcookie('a','value');

print $_cookie['a'];

第一次訪問時,報錯:

報錯的原因是$_cookie['a']的值不存在。第二次訪問:

問:為什麼第一次訪問的時候,會沒有cookie呢??我不是先設定,再獲取嗎??

答:使用firefox的firebug檢視」網路「:

客戶端:

可以看到,瀏覽器(客戶端)向伺服器發出一次請求,發出請求的時候,在請求頭資訊中帶上了各種引數,告訴伺服器,我要接收什麼樣的文字(accept)、什麼編碼格式(accept-encoding)、什麼語言(accept-language)等等,當然,還把cookie也傳到了伺服器(cookie)。

伺服器端:

第一步:setcookie('a','value')

因為cookie是設定在客戶端的,setcookie函式自己並不能設定cookie,它只能通過頭資訊的方式告訴瀏覽器說:兄弟,我要設定乙個cookie,鍵為a,值為value,你在你那裡幫我設定一下。你也可以理解為:」來,朕今天高興,賞你乙個小甜餅「。

第二步:$_cookie['a']$_cookie['a']

很簡單,執行的操作就是在瀏覽器帶過來的cookie字串中搜尋鍵為a的cookie,並返回它的值。

很明顯,這個」鍵為a「的cookie不可能找到,因為客戶端訪問伺服器的時候,這個cookie壓根就不存在,而前面第一步設定cookie的頭資訊,也還沒有返回給客戶端(php要從上到下把語句執行完才會返回給客戶端)

第三步:伺服器返回資訊

其中,返回的頭資訊中帶有」set-cookie a=value「,瀏覽器收到這個頭資訊,把cookie存放到電腦的某個檔案中,對於不同瀏覽器cookie的存放位置貌似不同,這個不在本文的範圍。

重新整理瀏覽器,再次訪問伺服器的時候,同樣,也會把很多頭資訊帶給伺服器,只不過這次帶過去的cookie中,就多了乙個a=value了。所心$_cookie['a']自然就能從cookie字串中找到這個鍵為a的cookie的值。

PHP setcookie無效的原因分析

ob start 控制您的瀏覽器cache,加在setcookie 之前,一般加在頁面頂部 ob get clean 輸出瀏覽器cache,看看結果是否存在cookie,加在setcookie 之後,一般加在頁面最後 乙個在apache xp下開發的企業 上傳到iis6.0伺服器,出現setcook...

關於php setcookie 的小知識

php cookie的基礎知識就不多講了,cookie的使用一直有爭議,它不能很好的保護使用者的隱私,而且使用者可以禁止cookie,這就不能實現你想要的功能。php cookie的功能和效能太弱,我比較很少用,cookie的原理是 a 伺服器通過隨著響應傳送乙個http 的set cookie 頭...

php setcookie函式引數說明與用法

php setcookie函式的引數說明及其用法。php setcookie函式的引數說明 用法 setcookie name,value,expire,path,domain,secure 引數 描述 name 必需。規定 cookie 的名稱。value 必需。規定 cookie 的值。expi...