PHP Cookies
在本教程中,您将学习如何使用 PHP cookie 在用户浏览器中存储少量信息。
什么是 Cookie
Cookie 是一个小型文本文件,可让您在用户计算机上存储少量数据(近 4KB)。 它们通常用于跟踪用户名等信息,当用户下次访问网站时,网站可以检索这些信息以个性化页面。
提示: 每次浏览器向服务器请求一个页面时,cookie 中的所有数据都会在请求内自动发送到服务器。
在 PHP 中设置 Cookie
setcookie()
函数用于在 PHP 中设置 cookie。 确保在脚本生成任何输出之前调用 setcookie()
函数,否则 cookie 将不会设置。 该函数的基本语法可以通过以下方式给出:
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 代码产生以下输出。
在访问其值之前检查是否设置了 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。