PHP 基础教程
PHP 高级教程
PHP & MySQL DATABASE
PHP 示例
PHP 参考手册

PHP Cookies

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

什么是 Cookie

Cookie 是一个小型文本文件,可让您在用户计算机上存储少量数据(近 4KB)。 它们通常用于跟踪用户名等信息,当用户下次访问网站时,网站可以检索这些信息以个性化页面。

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

在 PHP 中设置 Cookie

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

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

setcookie()函数的参数含义如下:

参数 说明
name cookie 的名称。
value cookie 的值。 不要存储敏感信息,因为此值存储在用户的计算机上。
expires UNIX 时间戳格式的到期日期。 在此时间之后,cookie 将变得无法访问。 默认值为 0。
path 指定 cookie 可用的服务器上的路径。 如果设置为 /,则 cookie 将在整个域中可用。
domain 指定 cookie 可用于的域,例如 www.example.com。
secure 此字段(如果存在)指示仅当存在安全的 HTTPS 连接时才应发送 cookie。

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

下面是一个使用 setcookie() 函数创建名为 username 的 cookie 并将值 John Carter 分配给它的示例。 它还指定 cookie 将在 30 天后过期(30 天 * 24 小时 * 60 分钟 * 60 秒)。

示例

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

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

警告:不要将敏感数据存储在 cookie 中,因为它可能会被恶意用户操纵。 要安全地存储敏感数据,请改用 sessions


访问 Cookie 值

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

示例

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

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

John Carter

在访问其值之前检查是否设置了 cookie 是一个很好的做法。 为此,您可以使用 PHP isset() 函数,如下所示:

示例

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

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


删除 Cookie

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

示例

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

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

Advertisements