background image

PHP Cookie 使用详细教程

PHP 用 SetCookie 函数来设置 Cookie。必须注意的一点是:Cookie 是 HTTP 协议头的一部
分,用于浏览器和服务器之间传递信息,所以必须在任何属于 HTML 文件本身的内容输
出之前调用 Cookie 函数。

  SetCookie 函数定义了一个 Cookie,并且把它附加在 HTTP 头的后面,SetCookie 函数
的原型如下:

  int SetCookie(string name, string value, int expire, string path, string domain, int secure);

  除了 name 之外所有的参数都是可选的。value,path,domain 三个参数可以用空字符串代
换,表示没有设置;expire   

和 secure 两个参数是数值型的,可以用 0 表示。expire 参数是一

个标准的 Unix 时间标记,可以用 time()或 mktime()

 

函数取得,以秒为 单位。secure 参数表

示这个 Cookie 是否通过加密的 HTTPS 协议在网络上传输。

  当前设置的 Cookie 不是立即生效的,而是要等到下一个页面时才能看到.这是由于在
设置的这个页面里 Cookie 由服务器传递给客户浏览器,在下一个页面浏览器才能把
Cookie 从客户的机器里取出传回服务器的原因。

  在同一个页面设置 Cookie,实际是从后往前,所以如果要在插入一个新的 Cookie 之
前删掉一个,你必须先写插入的语句,再写删除的语句,否则可能会出现不希望的结果。

  来看几个例子:

  简单的:

  SetCookie("MyCookie", "Value of MyCookie");

  带失效时间的:

  SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600 秒=1 小时

  什么都有的:

  SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".phpuser.com", 1);

  这里还有一点要说明的,比如你的站点有几个不同的目录,那么如果只用不带路径
的 Cookie 的话,在一个目录下的页面里设的 Cookie

 

在另一 个目录的页面里是看不到的,

也就是说,Cookie 是面向路径的。实际上,即使没有指定路径,WEB 服务器会自动传递

 

当前的路径给浏览器的,指定路径会强 制服务器使用设置的路径。解决这个问题的办法
是在调用 SetCookie

时加上路径和域名,域名的格式可以是 www.phpuser.com”

 “

,也可是 .

phpuser.com”。

  SetCookie 函数里表示 value 的部分,在传递时会自动被 encode,也就是说,如果 
value

的值是 test value”

在传递时就变成了 test%20value”,跟 URL 的方法一样。当然,对

于程序来说这是透明的,因为在 PHP 接收 Cookie

 

的值时会 自动将其 decode。

  如果要设置同名的多个 Cookie,要用数组,方法是:

  SetCookie("CookieArray[]", "Value 1");