Php 简明教程

PHP 超全局变量 $_COOKIE 存储通过 HTTP 请求以 cookie 形式传递给当前 PHP 脚本的变量。$HTTP_COOKIE_VARS 也包含相同信息,但它不是超全局变量,现在已被弃用。

cookie 是由服务器存储在客户端计算机上的文本文件,用于跟踪目的。PHP 透明支持 HTTP cookie。cookie 通常在 HTTP 标头中设置。JavaScript 也可以直接在浏览器上设置 cookie。

服务器脚本将一组 cookie 发送到浏览器。它将此信息存储在本地计算机上以供将来使用。下次当浏览器向 Web 服务器发送任何请求时,它会将这些 cookie 信息发送到服务器,而服务器则使用这些信息来识别用户。

The setcookie() Function

PHP 提供 setcookie 函数来创建要随 HTTP 响应一起发送到客户端的 cookie 对象。

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

Parameters

  1. Name − 存储的 cookie 名称。

  2. Value − 此设置指定了已命名变量的值。

  3. Expiry − 此设置指定从 1970 年 1 月 1 日 00:00:00 GMT 开始以秒为单位表示的未来时间。

  4. Path − cookie 有效的目录。

  5. Domain − 指定域名在非常大的域中。

  6. Security − HTTPS 为 1. 常规 HTTP 的默认值为 0。

How to Set Cookies

查看以下 example 。此脚本设置一个名为 username 的 Cookie(如果尚未设置)。

Example

<?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 服务器的根文档运行此脚本来。您应看到以下消息作为 output

Cookie username is now set

如果重新执行此脚本,则现在已设置 Cookie。

Cookie username already set: Mohan Kumar

Example

在客户端后续访问时检索 Cookie −

<?php
   $arr=$_COOKIE;
   foreach ($arr as $key=>$val);
   echo "<h2>$key => $val </h2>";
?>

浏览器将显示以下 output

Username => Mohan Kumar

How to Remove Cookies

要删除 cookie,请设置具有已经过期的日期的 cookie,以便浏览器触发 cookie 删除机制。

<?php
   setcookie("username", "", time() - 3600);
   echo "<h2>Cookie username is now removed</h2>";
?>

浏览器现在将显示以下 output

Cookie username is now removed

Setting Cookies Using the Array Notation

您还可以使用 Cookie 名称中的数组符号来设置数组 Cookie。

setcookie("user[three]", "Guest");
setcookie("user[two]", "user");
setcookie("user[one]", "admin");

如果 Cookie 名称包含句点 (.),则 PHP 将它们替换为下划线 (_)。