php中的cookie用法
cookie和session都可以暫時儲存在多個頁面中使用的變數,但是它們有本質的差別。
cookie存放在客戶端瀏覽器中,session儲存在伺服器上。它們之間的聯絡是session ID一般儲存在cookie中。
cookie工作原理
當客戶訪問某個網站時,在PHP中可以使用setcookie函式生成一個cookie,系統經處理把這個cookie傳送到客戶端並儲存在c:Documents and Settings使用者名稱\Cookies
目錄下。cookie是HTTP標頭的一部分,因此setcookie函式必須在任何內容送到瀏覽器之前呼叫。這種限制與header()函式一樣。當客戶再次訪問該網站時,瀏覽器會
自動把c:Documents and Settings使用者名稱\Cookies目錄下與該站點對應的cookie傳送到伺服器,伺服器則把從客戶端傳來的cookie將自動地轉化成一個PHP變數。
通過$_COOKIE['xxx']讀取客戶端發來的cookie。
建立 cookie
通過 setcookie() 函式來建立一個 cookie ,成功返回 TRUE ,否則返回 FALSE 。
語法:
bool setcookie( string name [, string value [, int expire [, string path [, string domain ]]]] )
引數說明:
name cookie 名稱
value 可選,cookie 值
expire 可選,過期時間,時間戳格式
path 可選,伺服器端有效路徑,/ 表示整個域名有效,預設為當前設定 cookie 時頁面的路徑
domain 可選,該 cookie 有效的域名
<?php
setcookie("username", "nostop", time()+3600); //設定了一個名稱為 username 的cookie,其值為 xiaoli ,並在1小時候後過期。如果時間也被省略,cookie 將會在會話結束後(一般是瀏覽器關閉)失效。
?>
cookie 會以一定格式被儲存在使用者計算機特定位置。
<?php
setcookie("username", "nostop", time()+3600, "/", ".example.com"); //在example.com 域名的 / 路徑下該 cookie 都有效(即全站有效)。
?>
讀取 cookie
PHP 內建了 $_COOKIE 變數以訪問設定的 cookie 值。
例子:
<?php
echo $_COOKIE["username"]; //nostop
?>
銷燬 cookie
可以通過設定 cookie 過期時間為以前的時間點來銷燬一個 cookie :
<?php
setcookie("username", "", time()-3600);
?>
cookie注意事項
1、SetCookie()之前不能有任何html輸出,就是空格,空白行都不行。
2、SetCookie()後,你在當前頁呼叫echo $_COOKIE["name"]不會有輸出。必須重新整理或到下一個頁面在過期之前才可以看到Cookie值。
3、由於 cookie 資訊儲存於使用者的計算機中,那麼就有可能偽造或修改 cookie 從而造成 cookie 欺騙,一般可以對 cookie 的值進行加密來預防欺騙。讀取 cookie 的時候,對 cookie 解密即可。
4、Cookie是儲存在客戶端的,使用者禁用了Cookie,你的Cookie自然也就沒作用啦!
<?php
setcookie('username','nostop',time()+3600); //建立cookie
if(isset($_COOKIE["username"])){ //使用isset()函式檢測cookie變數是否已經被設定
echo "您好!".$_COOKIE["username"]; //您好!nostop 讀取cookie
}else{
echo "請登陸";
}
?>