PHP Cookies

PHP Cookies

Cookies是保存在客户端计算机上的文本文件,它们用于跟踪用户行为。PHP透明地支持HTTP cookies。

识别返回用户涉及三个步骤 –

  • 服务器脚本将一组cookie发送到浏览器。例如,姓名,年龄或身份证号等。

  • 浏览器将此信息存储在本地机器上以供将来使用。

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

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

Cookie的组成部分

Cookies通常在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的名称和值。上述cookie可以使用$HTTP_COOKIE_VARS[“name”]访问。

使用PHP设置cookie

PHP提供了 setcookie() 函数来设置cookie。该函数需要最多六个参数,并且应该在标签之前调用。对于每个cookie,需要单独调用此函数。

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

下面是所有参数的详细信息:

  • Name - 设置Cookie的名称,并存储在名为HTTP_COOKIE_VARS的环境变量中。此变量用于访问Cookie。

  • Value - 设置被命名变量的值,即您实际想存储的内容。

  • Expiry - 以从1970年1月1日00:00:00 GMT开始的秒数指定将来的时间。在此时间后,Cookie将无法访问。如果未设置此参数,则Cookie将在Web浏览器关闭时自动过期。

  • Path - 指定Cookie有效的目录。一个斜杠字符表示允许Cookie对所有目录有效。

  • Domain - 可用于指定非常大的域名,并且必须至少包含两个句点才能有效。所有Cookie仅对创建它们的主机和域名有效。

  • Security - 设置为1时,指定Cookie只能通过使用HTTPS进行安全传输发送;设置为0时,表示Cookie可以通过常规的HTTP发送。

以下示例将创建两个Cookie nameage ,这些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访问Cookies

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

<html>

   <head>
      <title>Accessing Cookies with PHP</title>
   </head>

   <body>

      <?php
         echo _COOKIE["name"]. "<br />";

         /* is equivalent to */
         echoHTTP_COOKIE_VARS["name"]. "<br />";

         echo _COOKIE["age"] . "<br />";

         /* is equivalent to */
         echoHTTP_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,你只需要调用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>

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程