在本教程中,您将学习如何使用PHP cookie在用户的浏览器内部存储少量信息。
Cookie是一个小型文本文件,可让您在用户计算机上存储少量数据(最大4KB左右)。它们通常用于跟踪诸如用户名之类的信息,当用户下次访问网站时,网站可以检索该信息以显示特定个性化页面。
提示:每次浏览器向服务器请求页面时,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.thinktus.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。
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名称和任何值(例如空字符串)调用相同的setcookie()函数来删除cookie,但是您需要设置为现在之前的过期日期,如下例所示:
<?php //删除cookie setcookie("username", "", time()-3600); ?>
提示:您应该传递与首次创建Cookie时使用的路径,域和其他参数完全相同的名称,以确保删除正确的Cookie。