- PHP教程
 - PHP-主页
 - PHP - 简介
 - PHP-环境设置
 - PHP - 语法概述
 - PHP - 变量类型
 - PHP - 常量
 - PHP - 运算符类型
 - PHP - 决策
 - PHP - 循环类型
 - PHP-数组
 - PHP-字符串
 - PHP - 网络概念
 - PHP - 获取和发布
 - PHP - 文件包含
 - PHP - 文件和 I/O
 - PHP - 函数
 - PHP-Cookie
 - PHP-会话
 - PHP - 发送电子邮件
 - PHP-文件上传
 - PHP - 编码标准
 
- 高级PHP
 - PHP - 预定义变量
 - PHP-正则表达式
 - PHP - 错误处理
 - PHP - 错误调试
 - PHP - 日期和时间
 - PHP 和 MySQL
 - PHP 和 AJAX
 - PHP 和 XML
 - PHP——面向对象
 - PHP - 面向 C 开发人员
 - PHP - 适合 PERL 开发人员
 
- PHP 表单示例
 - PHP-表单介绍
 - PHP - 验证示例
 - PHP - 完整表格
 
- PHP框架作品
 - PHP-框架工程
 - PHP - 核心 PHP 与 Frame Works
 
- PHP 设计模式
 - PHP - 设计模式
 
- PHP 函数参考
 - PHP - 内置函数
 
- PHP 有用资源
 - PHP - 问题与解答
 - PHP - 有用的资源
 - PHP - 讨论
 
PHP-Cookie
Cookie 是存储在客户端计算机上的文本文件,用于跟踪使用情况。PHP 透明地支持 HTTP cookie。
识别回访用户涉及三个步骤 -
服务器脚本向浏览器发送一组 cookie。例如姓名、年龄或身份证号码等。
浏览器将此信息存储在本地计算机上以供将来使用。
当下次浏览器向 Web 服务器发送任何请求时,它会将这些 Cookie 信息发送到服务器,服务器使用该信息来识别用户。
本章将教您如何设置cookie、如何访问它们以及如何删除它们。
cookie的解剖
Cookie 通常设置在 HTTP 标头中(尽管 JavaScript 也可以直接在浏览器上设置 Cookie)。设置 cookie 的 PHP 脚本可能会发送如下所示的标头 -
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=tutorialspoint.com
Connection: close
Content-Type: text/html
 
如您所见,Set-Cookie 标头包含名称值对、GMT 日期、路径和域。名称和值将进行 URL 编码。过期字段指示浏览器在给定的时间和日期之后“忘记”cookie。
如果浏览器配置为存储 cookie,它将保留此信息直至到期日期。如果用户将浏览器指向与 cookie 的路径和域匹配的任何页面,它会将 cookie 重新发送到服务器。浏览器的标头可能如下所示 -
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz
然后,PHP 脚本将可以访问环境变量 $_COOKIE 或 $HTTP_COOKIE_VARS[] 中的 cookie,其中保存了所有 cookie 名称和值。可以使用 $HTTP_COOKIE_VARS["name"] 访问上述 cookie。
使用 PHP 设置 Cookie
PHP 提供了setcookie()函数来设置 cookie。此函数最多需要六个参数,并且应在 <html> 标记之前调用。对于每个 cookie,必须单独调用此函数。
setcookie(name, value, expire, path, domain, security);
这是所有参数的详细信息 -
名称- 设置 cookie 的名称并存储在名为 HTTP_COOKIE_VARS 的环境变量中。该变量在访问 cookie 时使用。
值- 设置命名变量的值,并且是您实际想要存储的内容。
到期- 这指定了自 1970 年 1 月 1 日 00:00:00 GMT 起的未来时间(以秒为单位)。在此时间之后 cookie 将无法访问。如果未设置此参数,则当 Web 浏览器关闭时 cookie 将自动过期。
路径- 这指定 cookie 有效的目录。单个正斜杠字符允许 cookie 对所有目录都有效。
域- 这可用于指定非常大的域中的域名,并且必须包含至少两个句点才有效。所有 cookie 仅对创建它们的主机和域有效。
安全性- 可以将其设置为 1,以指定 cookie 只能通过使用 HTTPS 的安全传输来发送,否则设置为 0,这意味着 cookie 可以通过常规 HTTP 发送。
以下示例将创建两个 cookie名称和年龄,这些 cookie 将在一小时后过期。
<?php
   setcookie("name", "John Watkin", time()+3600, "/","", 0);
   setcookie("age", "36", time()+3600, "/", "",  0);
?>
<html>
   
   <head>
      <title>Setting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Set Cookies"?>
   </body>
   
</html>
 
使用 PHP 访问 Cookie
PHP 提供了多种访问 cookie 的方法。最简单的方法是使用 $_COOKIE 或 $HTTP_COOKIE_VARS 变量。以下示例将访问上例中设置的所有 cookie。
<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["name"]. "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["name"]. "<br />";
         
         echo $_COOKIE["age"] . "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["age"] . "<br />";
      ?>
      
   </body>
</html>
 
您可以使用isset()函数来检查 cookie 是否已设置。
<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         if( isset($_COOKIE["name"]))
            echo "Welcome " . $_COOKIE["name"] . "<br />";
         
         else
            echo "Sorry... Not recognized" . "<br />";
      ?>
      
   </body>
</html>
使用 PHP 删除 Cookie
正式地,要删除 cookie,您应该仅使用 name 参数调用 setcookie(),但这并不总是能很好地工作,但是,不应依赖它。
将 cookie 设置为已过期的日期是最安全的 -
<?php
   setcookie( "name", "", time()- 60, "/","", 0);
   setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
   
   <head>
      <title>Deleting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Deleted Cookies" ?>
   </body>
   
</html>
