1.什么是Cookie?
Cookie保存在客戶端瀏覽器中,cookie是Http頭的一部分,通過瀏覽器請求頁面時,它會被通過Http頭的形式發送過去。被請求的頁面,可以通過PHP來獲取cookie的值。
Cookie和瀏覽器和域名相關,不同瀏覽器各自存儲,cookie只會在當前域名發送,其他域名不會帶上cookie去請求。
2.設置Cookie:
語法:
bool setcookie( string name,[string value],[int expire],[string path],[string domain]);
參數說明:
name:cookie名(必填)
value:cookie值(可選)
expire:過期時間,時間戳格式(可選)。不設置則默認為會話級cookie,在瀏覽器關閉后cookie失效。
path:服務器端有效路徑(可選)。默認為當前設置cookie時頁面的路徑,'/'表示整個域名有效,'/A'表示A分類目錄下的頁面有效。只有設置的路徑包含的頁面才可以拿到cookie值
domain:該cookie有效的域名(可選),只有指定的域名才可以拿到cookie,默認所有域名都可以拿到。 如,“www.php.com”,也可是“.php.com”。
實例:
setcookie('validCode','value',time()+3600*12,'/','www.test.com');
cookie名稱:validCode
cookie值:value
過期時間:12小時后過期
可以拿到cookie的頁面:所有頁面
可以拿到cookie的域名:www.test.com
圖文解析:
$cookieValue = 'value';
$flag = setcookie('validCode', $cookieValue,time()+60,'/');
首次設置,響應頭Set-Cookie已經有名為validCode的信息了,表示該cookie已存放在硬盤中該瀏覽器的cookie目錄里了
請求頭里面此時還沒攜帶改Cookie,下次請求就會帶上了。
設置完成后再請求頁面就會攜帶cookie了:(如果限制了路徑或域名,則只會在指定的頁面才會攜帶cookie去請求)
3.獲取Cookie:
$cookieValue ='';
if (isset($_COOKIE['validCode'])) //首先判斷是否已設置了該cookie
{
$cookieValue = $_COOKIE['validCode'];
}
4.銷毀Cookie:
可以通過設置cookie過期時間為以前的時間點來銷毀:
setcookie("user", "", time()-3600);
5.Cookie注意事項:
1、setcookie()之前不能有任何html輸出,就是空格,空白行都不行。
2、setcookie()后,你在當前頁調用echo $_COOKIE["name"]不會有輸出。必須刷新或到下一個頁面在過期之前才可以看到Cookie值。
3、由於cookie信息存儲於用戶的計算機中,那么就有可能偽造或修改Cookie從而造成Cookie 欺騙,一般可以對cookie的值進行加密來預防欺騙。讀取Cookie的時候,對Cookie解密即可。
4、Cookie是保存在客戶端的,用戶禁用了Cookie,你的Cookie自然也就沒作用啦!
站外擴展: