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