Cookie的创建十分简单,只要用户的浏览器支持 Cookie 功能,就可以使用 PHP 内建的函数来建立一个新的Cookie。在PHP中通过 setcookie() 函数创建 Cookie。在创建 Cookie 之前必须了解的是, Cookie是 HTTP 头标的组成部分,而头标必须在页面其他内容之前发送,因此它必须最先输出。所以即使是空格或者是空行,都不要在调用setcookie() 函数之前输出。 若在 setcookie() 函数前输出一个 HTML标记、echo语句,甚至一个空行都会导致程序出错
其语法是如下的格式:
1 | |
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 | |
说明:上例中表示建立一个识别名称为“username” 的 Cookie,其内容值为字符串“sky”,而在客户端的存储有效期为1小时。参数"/test" 表示 Cookie 只有在故武器的这个子目录或子目录中有效。参数".php.cn" 使 Cookie能在如 php.cn 域名下的所有子域中都有效,虽然 “.” 并不是必需的,但加上它会兼容更多的浏览器。当最后一个参数设为 1 时,则 Cookie 仅在安全的连接中才能被设置。
使用setcookie()给的值只能是数字或者字符串,不能是其他的复杂结构。