php中cookie和session

cookie和session均可以暫時保存在多個頁面中使用的變量,可是它們有本質的差異。php

cookie存放在客戶端瀏覽器中,session保存在服務器上。它們之間的聯繫是session ID通常保存在cookie中。html

cookie工做原理瀏覽器

當客戶訪問某個網站時,在PHP中可使用setcookie函數生成一個cookie,系統經處理把這個cookie發送到客戶端並保存在c:Documents and Settings用戶名\Cookies服務器

目錄下。cookie是HTTP標頭的一部分,所以setcookie函數必須在任何內容送到瀏覽器以前調用。這種限制與header()函數同樣。當客戶再次訪問該網站時,瀏覽器會cookie

自動把c:Documents and Settings用戶名\Cookies目錄下與該站點對應的cookie發送到服務器,服務器則把從客戶端傳來的cookie將自動地轉化成一個PHP變量。session

經過$_COOKIE['xxx']讀取客戶端發來的cookie。dom

建立 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注意事項

一、SetCookie()以前不能有任何html輸出,就是空格,空白行都不行。

二、SetCookie()後,你在當前頁調用echo $_COOKIE["name"]不會有輸出。必須刷新或到下一個頁面在過時以前才能夠看到Cookie值。

三、因爲 cookie 信息存儲於用戶的計算機中,那麼就有可能僞造或修改 cookie 從而形成 cookie 欺騙,通常能夠對 cookie 的值進行加密來預防欺騙。讀取 cookie 的時候,對 cookie 解密便可。

四、Cookie是保存在客戶端的,用戶禁用了Cookie,你的Cookie天然也就沒做用啦!

<?php

setcookie('username','nostop',time()+3600);    //建立cookie

if(isset($_COOKIE["username"])){    //使用isset()函數檢測cookie變量是否已經被設置

    echo "您好!".$_COOKIE["username"];    //您好!nostop     讀取cookie 

}else{

    echo "請登錄";

}

?>

相關文章
相關標籤/搜索