PHP - $_COOKIE
PHP 超全局变量 $_COOKIE 用于存储随 HTTP 请求一起传递给当前 PHP 脚本的 cookie 变量。$HTTP_COOKIE_VARS 也包含相同的信息,但它不是超全局变量,并且已被弃用。
什么是 Cookie?
Cookie 是服务器存储在客户端计算机上的文本文件,用于跟踪目的。PHP 透明地支持 HTTP cookie。Cookie 通常在 HTTP 头部中设置。JavaScript 也可以直接在浏览器上设置 cookie。
服务器脚本向浏览器发送一组 cookie。它将此信息存储在本地机器上以供将来使用。下次,当浏览器向 Web 服务器发送任何请求时,它会将这些 cookie 信息发送到服务器,服务器使用这些信息来识别用户。
setcookie() 函数
PHP 提供了 setcookie 函数,用于创建 cookie 对象并随 HTTP 响应发送到客户端。
setcookie(name, value, expire, path, domain, security);
参数
以下是 setcookie() 函数的参数:
Name − 存储的 cookie 名称。
Value − 设置命名变量的值。
Expiry − 指定从 1970 年 1 月 1 日 00:00:00 GMT 开始的未来时间(以秒为单位)。
Path − cookie 有效的目录。
Domain − 指定非常大的域中的域名。
Security − HTTPS 为 1。普通 HTTP 默认值为 0。
如何设置 Cookie
查看以下示例。此脚本如果 cookie 尚未设置,则设置名为 username 的 cookie。
示例
<?php
if (isset($_COOKIE['username'])) {
echo "<h2>Cookie username already set: " . $_COOKIE['username'] . "</h2>";
} else {
setcookie("username", "Mohan Kumar");
echo "<h2>Cookie username is now set.</h2>";
}
?>
从 Apache 服务器的文档根目录运行此脚本。您应该看到以下输出:
Cookie username is now set
如果重新执行此脚本,则 cookie 已设置。
Cookie username already set: Mohan Kumar
示例
要在客户端下次访问时检索 cookie:
<?php $arr=$_COOKIE; foreach ($arr as $key=>$val); echo "<h2>$key => $val </h2>"; ?>
浏览器将显示以下输出:
Username => Mohan Kumar
如何读取 Cookie
我们可以使用 $_COOKIE 变量来读取 cookie。isset() 函数用于检查 cookie 是否存在。$_COOKIE["username"] 用于检索 cookie 值。
<?php
if(isset($_COOKIE["username"])) {
echo "Welcome " . $_COOKIE["username"];
} else {
echo "Cookie is not set.";
}
?>
如何删除 Cookie
要删除 cookie,请设置一个已过期日期的 cookie,以便浏览器触发 cookie 删除机制。
<?php
setcookie("username", "", time() - 3600);
echo "<h2>Cookie username is now removed</h2>";
?>
浏览器现在将显示以下输出:
Cookie username is now removed
使用数组表示法设置 Cookie
您也可以通过在 cookie 名称中使用数组表示法来设置数组 cookie。
setcookie("user[three]", "Guest");
setcookie("user[two]", "user");
setcookie("user[one]", "admin");
如果 cookie 名称包含点 (.),则 PHP 会将它们替换为下划线 (_)。
PHP 中何时使用 Cookie
您可以在 PHP 中使用 cookie 在用户的浏览器上保存少量数据以供以后使用!让我们讨论一些常见情况:
用户认证(登录系统)
记住用户偏好设置
跟踪用户活动
购物车
会话管理
个性化问候或消息