PHP - Cookies

PHP - Cookies 首页 / PHP入门教程 / PHP - Cookies

Cookies是存储在客户端计算机上的文本文件。

识别用户涉及三个步骤-

  • 服务器脚本将一组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=learnfk.com
Connection: close
Content-Type: text/html

如您所见,Set-Cookie标头包含名称值对,GMT日期,路径和域名。名称和值将进行URL编码。 expires 表示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或$HTTP_COOKIE_VARS []中的cookie。上面的cookie可以使用$HTTP_COOKIE_VARS [" name"]访问。

设置Cookies

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

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

这是所有参数的详细信息-

  • name       -   设置cookie的名称,并存储在名为HTTP_COOKIE_VARS的环境变量中。

  • value       -   这将设置命名变量的值,并且是您实际要存储的内容。

  • expire     -  过期时间,如果未设置此参数,则在关闭Web浏览器时cookie将自动失效。

  • path        -  这指定cookie有效的目录。

  • domain   -  所有cookie仅对创建它们的域名有效。

  • security   -  可以将其设置为1,以指定仅通过使用HTTPS的安全传输来发送cookie,否则设置为0,这意味着可以通过常规HTTP发送cookie

以下示例将创建两个 name 和 age 的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 "Set Cookies"?>
   </body>
   
</html>

访问Cookies

PHP提供了许多访问cookie的方法。最简单的方法是使用$_COOKIE或$HTTP_COOKIE_VARS变量。

<html>
   
   <head>
      <title>用PHP访问Cookies</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>用PHP访问Cookies</title>
   </head>
   
   <body>
      
      <?php
         if( isset($_COOKIE["name"]))
            echo "Welcome " . $_COOKIE["name"] . "<br />";
         
         else
            echo "Sorry... Not recognized" . "<br />";
      ?>
      
   </body>
</html>

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

人工智能基础课 -〔王天一〕

从0开始学架构 -〔李运华〕

如何做好一场技术演讲 -〔极客时间〕

浏览器工作原理与实践 -〔李兵〕

全栈工程师修炼指南 -〔熊燚(四火)〕

说透中台 -〔王健〕

体验设计案例课 -〔炒炒〕

容量保障核心技术与实战 -〔吴骏龙〕

Dubbo源码剖析与实战 -〔何辉〕

好记忆不如烂笔头。留下您的足迹吧 :)