PHP Cookie

在本教程中,您将学习如何使用PHP cookie在用户的浏览器内部存储少量信息。

什么是Cookie

Cookie是一个小型文本文件,可让您在用户计算机上存储少量数据(最大4KB左右)。它们通常用于跟踪诸如用户名之类的信息,当用户下次访问网站时,网站可以检索该信息以显示特定个性化页面。

提示:每次浏览器向服务器请求页面时,cookie中的所有数据都会自动发送到请求内的服务器。

设置 Cookie

setcookie()函数用于在PHP中设置cookie。 确保在脚本生成的任何输出之前调用setcookie()函数,否则将不会设置cookie。 该函数的基本语法可以通过以下方式给出:

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

该setcookie()函数的参数具有以下含义:

参数描述
nameCookie的名称。
valueCookie的值。由于此值存储在用户的计算机上,因此请勿存储敏感信息。
expiresUNIX时间戳格式的过期日期。 在此时间之后,cookie将变得不可访问。 默认值为0
path在服务器上指定cookie可用的路径。如果设置为/,则cookie将在整个域中可用。
domain指定可用于其Cookie的域,例如:www.cainiaojc.com。
secure该字段(如果存在)表示仅当存在安全的HTTPS连接时才发送cookie。

提示:如果cookie的过期时间设置为0或省略,则cookie将在会话结束时即浏览器关闭时过期。

下面是一个使用setcookie()函数创建名为userName的cookie并为其赋值John Carter的示例。 同时指定cookie过期时间为30天(30 days * 24 hours * 60 min * 60 sec)。       

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

注意:除名称外,所有参数都是可选的。您也可以用空字符串(“”)替换参数以跳过该参数,但是要跳过expire参数,请改用零,因为它是整数。

警告:请勿将敏感数据存储在Cookie中,因为恶意用户可能会操纵敏感数据。为了安全地存储敏感数据,请使用Session

访问 Cookie值

PHP 超全局变量$_COOKIE用于检索cookie值。它通常是一个关联数组,其中包含浏览器在当前请求中发送的所有cookie值的列表,并以cookie名称为关键字。可以使用标准数组符号访问单个cookie值,例如,要显示在上一个示例中设置的用户名cookie,可以使用以下代码。

<?php
//访问单个Cookie值
echo $_COOKIE["username"];
?>

上面示例中的PHP代码产生以下输出。

John Carter

在访问cookie的值之前,最好先检查是否已设置cookie。为此,您可以使用PHP isset()函数,如下所示:

<?php
//验证是否设置了cookie
if(isset($_COOKIE["username"])){
    echo "Hi " . $_COOKIE["username"];
} else{
    echo "Welcome Guest!";
}
?>

您可以使用像 print_r($_cookie);这样的print_r()函数来查看这个$_cookie关联数组的结构,就像您处理其他数组一样。

删除 Cookie

您可以通过使用cookie名称和任何值(例如空字符串)调用相同的setcookie()函数来删除cookie,但是您需要设置为现在之前的过期日期,如下例所示:

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

提示:您应该传递与首次创建Cookie时使用的路径,域和其他参数完全相同的名称,以确保删除正确的Cookie。