PHP如何操作Cookie?

Cookie是存储在客户端计算机上的文本文件,它们保留用于跟踪目的。PHP透明地支持HTTP cookie。

识别回归用户涉及三个步骤

 ● 服务器脚本将一组cookie发送到浏览器。例如年龄等。

 ● 浏览器将此信息存储在本地计算机上以供将来使用

 ● 当下次浏览器向Web服务器发送任何请求时,它会将这些cookie信息发送到服务器,服务器使用该信息来识别用户。

本章将教您如何设置cookie,如何访问它们以及如何删除它们。

Cookie的剖析

Cookie通常设置在HTTP标头中(尽管JavaScript也可以直接在浏览器上设置cookie)。设置cookie的PHP脚本可能会发送看起来像这样的标题(浏览器F12,network(网络)可以看到)

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=jc2182.com
Connection: close
Content-Type: text/html

如您所见,Set-Cookie标头包含名称值对,GMT日期,路径和域。名称和值将进行URL编码。expires字段是浏览器在给定时间和日期之后删除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,其中包含所有cookie名称和值。

用PHP设置Cookies

PHP提供了setcookie()函数来设置cookie。此函数最多需要六个参数,应在<html>标记之前调用。对于设置每一个cookie,必须单独调用此函数。

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

这是所有参数的细节

 ● name – 设置cookie的名称。

 ● value – 设置命名变量的值,并且是您实际要存储的内容。

 ● expire – 这指定自1970年1月1日格林尼治标准时间00:00:00以来的未来时间(以秒为单位)。在此之后,cookie将无法访问。如果未设置此参数,则在Web浏览器关闭时cookie将自动过期。

 ● path – 指定cookie有效的目录。单个正斜杠字符允许cookie对所有目录有效。

 ● domain – 这可用于在非常大的域中指定域名,并且必须至少包含两个有效期。所有cookie仅对创建它们的主机和域有效。

 ● security – 可以设置为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>用PHP设置Cookies</title>
   </head>
   
   <body>
      <?php echo "设置 Cookies"?>
   </body>
   
</html>

提示:time()函数返回的是当前的时间戳,也就是1970年1月一日0点0分0秒到脚本执行的那一刻的秒数。

打开浏览器访问脚本,然后按F12打开开发者模式,选择Network(网络)选项卡,选择Headers,可以看到如下图所示:

1.png

使用PHP访问Cookie

PHP提供了许多访问cookie的方法。最简单的方法是使用$_COOKIE变量。以下示例将访问上面示例中设置的所有cookie。

<html>
   
   <head>
      <title>用PHP访问cookie</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["name"]. "<br />";
         
         echo $_COOKIE["age"] . "<br />";
  
      ?>
      
   </body>
</html>

您可以使用isset()函数来检查是否设置了cookie。如果设置了再进行输出。

<html>
   
   <head>
      <title>用PHP访问cookie</title>
   </head>
   
   <body>
      
      <?php
         if(isset($_COOKIE["name"]))
                echo $_COOKIE["name"]. "<br />";
         if(isset($_COOKIE["age"]))
                echo $_COOKIE["age"] . "<br />";
  
      ?>
      
   </body>
</html>

用PHP删除Cookie

正式地说,要删除一个cookie,你应该只使用name参数调用setcookie()[也就是说想删除那个name,把他设置成空],但这并不总是有效,不应该依赖。最安全的做法是设置一个已经过期的日期

/ 设置过去时间为当前时间的之前的60秒 /

<?php
   /* 设置过去时间为当前时间的之前的60秒 */
   setcookie( "name", "", time()- 60, "/","", 0);
   setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
   
   <head>
      <title>用PHP删除cookie</title>
   </head>
   
   <body>
      <?php echo "删除cookie" ?>
   </body>
   
</html>

推荐学习:PHP教程

以上就是PHP如何操作Cookie?的详细内容,更多请关注求知技术网其它相关文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注