PHP 菜鳥(niǎo)教程

PHP 高級(jí)教程

PHP & MySQL

PHP 參考手冊(cè)

PHP Cookie

在本教程中,您將學(xué)習(xí)如何使用PHP cookie在用戶的瀏覽器內(nèi)部存儲(chǔ)少量信息。

什么是Cookie

Cookie是一個(gè)小型文本文件,可讓您在用戶計(jì)算機(jī)上存儲(chǔ)少量數(shù)據(jù)(最大4KB左右)。它們通常用于跟蹤諸如用戶名之類的信息,當(dāng)用戶下次訪問(wèn)網(wǎng)站時(shí),網(wǎng)站可以檢索該信息以顯示特定個(gè)性化頁(yè)面。

提示:每次瀏覽器向服務(wù)器請(qǐng)求頁(yè)面時(shí),cookie中的所有數(shù)據(jù)都會(huì)自動(dòng)發(fā)送到請(qǐng)求內(nèi)的服務(wù)器。

設(shè)置 Cookie

setcookie()函數(shù)用于在PHP中設(shè)置cookie。 確保在腳本生成的任何輸出之前調(diào)用setcookie()函數(shù),否則將不會(huì)設(shè)置cookie。 該函數(shù)的基本語(yǔ)法可以通過(guò)以下方式給出:

setcookie(name, value, expire, path, domain, secure);

該setcookie()函數(shù)的參數(shù)具有以下含義:

參數(shù)描述
nameCookie的名稱。
valueCookie的值。由于此值存儲(chǔ)在用戶的計(jì)算機(jī)上,因此請(qǐng)勿存儲(chǔ)敏感信息。
expiresUNIX時(shí)間戳格式的過(guò)期日期。 在此時(shí)間之后,cookie將變得不可訪問(wèn)。 默認(rèn)值為0
path在服務(wù)器上指定cookie可用的路徑。如果設(shè)置為/,則cookie將在整個(gè)域中可用。
domain指定可用于其Cookie的域,例如:www.soo66.com。
secure該字段(如果存在)表示僅當(dāng)存在安全的HTTPS連接時(shí)才發(fā)送cookie。

提示:如果cookie的過(guò)期時(shí)間設(shè)置為0或省略,則cookie將在會(huì)話結(jié)束時(shí)即瀏覽器關(guān)閉時(shí)過(guò)期。

下面是一個(gè)使用setcookie()函數(shù)創(chuàng)建名為userName的cookie并為其賦值John Carter的示例。 同時(shí)指定cookie過(guò)期時(shí)間為30天(30 days * 24 hours * 60 min * 60 sec)。       

<?php
//設(shè)置Cookie
setcookie("username", "John Carter", time()+30*24*60*60);
?>

注意:除名稱外,所有參數(shù)都是可選的。您也可以用空字符串(“”)替換參數(shù)以跳過(guò)該參數(shù),但是要跳過(guò)expire參數(shù),請(qǐng)改用零,因?yàn)樗钦麛?shù)。

警告:請(qǐng)勿將敏感數(shù)據(jù)存儲(chǔ)在Cookie中,因?yàn)閻阂庥脩艨赡軙?huì)操縱敏感數(shù)據(jù)。為了安全地存儲(chǔ)敏感數(shù)據(jù),請(qǐng)使用Session。

訪問(wèn) Cookie值

PHP 超全局變量$_COOKIE用于檢索cookie值。它通常是一個(gè)關(guān)聯(lián)數(shù)組,其中包含瀏覽器在當(dāng)前請(qǐng)求中發(fā)送的所有cookie值的列表,并以cookie名稱為關(guān)鍵字。可以使用標(biāo)準(zhǔn)數(shù)組符號(hào)訪問(wèn)單個(gè)cookie值,例如,要顯示在上一個(gè)示例中設(shè)置的用戶名cookie,可以使用以下代碼。

<?php
//訪問(wèn)單個(gè)Cookie值
echo $_COOKIE["username"];
?>

上面示例中的PHP代碼產(chǎn)生以下輸出。

John Carter

在訪問(wèn)cookie的值之前,最好先檢查是否已設(shè)置cookie。為此,您可以使用PHP isset()函數(shù),如下所示:

<?php
//驗(yàn)證是否設(shè)置了cookie
if(isset($_COOKIE["username"])){
    echo "Hi " . $_COOKIE["username"];
} else{
    echo "Welcome Guest!";
}
?>

您可以使用像 print_r($_cookie);這樣的print_r()函數(shù)來(lái)查看這個(gè)$_cookie關(guān)聯(lián)數(shù)組的結(jié)構(gòu),就像您處理其他數(shù)組一樣。

刪除 Cookie

您可以通過(guò)使用cookie名稱和任何值(例如空字符串)調(diào)用相同的setcookie()函數(shù)來(lái)刪除cookie,但是您需要設(shè)置為現(xiàn)在之前的過(guò)期日期,如下例所示:

<?php
//刪除cookie
setcookie("username", "", time()-3600);
?>

提示:您應(yīng)該傳遞與首次創(chuàng)建Cookie時(shí)使用的路徑,域和其他參數(shù)完全相同的名稱,以確保刪除正確的Cookie。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清