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);

参数

  • 名称 - 存储的 Cookie 名称。

  • - 设置命名变量的值。

  • 过期时间 - 自 1970 年 1 月 1 日 00:00:00 GMT 以来的秒数。

  • 路径 - Cookie 有效的目录。

  • 域名 - 在非常大的域名中指定域名。

  • 安全 - HTTPS 为 1。HTTP 默认值为 0。

如何设置 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 日期,以便浏览器触发 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 会将它们替换为下划线 (_)。

广告