Cookie的创建十分简单,只要用户的浏览器支持 Cookie 功能,就可以使用 PHP 内建的函数来建立一个新的Cookie。在PHP中通过 setcookie() 函数创建 Cookie。在创建 Cookie 之前必须了解的是, Cookie是 HTTP 头标的组成部分,而头标必须在页面其他内容之前发送,因此它必须最先输出。所以即使是空格或者是空行,都不要在调用setcookie() 函数之前输出。 若在 setcookie() 函数前输出一个 HTML标记、echo语句,甚至一个空行都会导致程序出错​

 

其语法是如下的格式:


1




​setcookie(name,value,expire,path,domain,secure)​


setcookie() 函数定义一个和其余的 HTTP 标头一起发送的 Cookie,它的所有参数是对应 HTTP 标头 Cookie 资料的属性。虽然 setcookie() 函数的导入参数看起来不少,但除了参数name , 其他参数都是非必须的,而我们经常使用的只有 $name , $value和 $expire 这三个参数。

setcookie() 函数的 参数说明如下:

1) name

Cookie 的变量名

可以通过 $_COOKIE["cookiename"] 调用变量名为 cookiename 的 Cookie

2)value

Cookie 变量的值,该值保存在客户端,不能用来保存敏感数据

可以通过 $_COOKIE["values"] 获取名为 values 的值

3) expire

Cookie 的失效时间,expire 是标准的 UNIX 时间标记,可以用 time()函数 或者 mktime() 函数获取,单位为秒

如果不设置 Cookie 的失效时间 ,那么 Cookie 将永远有效,除非手动将其删除

4) path

Cookie 在服务端的有效路径

如果该参数设置成 “ / ”,则它在整个 domain 内有效, 如果设置为 “ /11 ”,它在 domain 下的 /11 目录及子目录内有效。默认是当前目录

5) domain

Cookie 有效地域名

如果要使 Cookie 在 abc.com 域名下的所有子域名都有效,应该设置为 abc.com

6) secure

指明 Cookie是否通过安全的 HTTPS,值为 0 或 1

如果值为1,则 Cookie 只能在 HTTPS 连接上有效;如果值为默认值 0,则 Cookie 在 HTTP 和 HTTPS连接上均有效。

如果只有$name 这一个参数,则原有此名称的 cookie 选项将会被删除,也可以使用空字符串来省略此参数。参数$expire 和 $secure 是一个整数,可以使用 0 来省略此参数,而不是使用空字符串。但 参数$expire 是一个正规的 UNIX 时间整数,由time()或者 mktime()函数传回。 参数 $secure 指出此 Cookie 将只有在安全的 HTTPS 连接时传送。

使用 setcookie() 函数的全部参数设置,实例代码如下的显示


1

2

3




​<?php​

​setcookie(​​​​"username"​​​​,​​​​"sky"​​​​,time()+60*60,​​​​"/test"​​​​,​​​​".php.cn"​​​​,1);​

​?>​


说明:上例中表示建立一个识别名称为“username” 的 Cookie,其内容值为字符串“sky”,而在客户端的存储有效期为1小时。参数"/test" 表示 Cookie 只有在故武器的这个子目录或子目录中有效。参数".php.cn" 使 Cookie能在如 php.cn 域名下的所有子域中都有效,虽然 “.” 并不是必需的,但加上它会兼容更多的浏览器。当最后一个参数设为 1 时,则 Cookie 仅在安全的连接中才能被设置。

使用setcookie()给的值只能是数字或者字符串,不能是其他的复杂结构。