php header 之 Set-Cookie
php设置cookie可以使用setcookie函数或header函数。使用header方式时候需要注意字符串的顺序,如果顺序不对,可能会出现意想不到的问题。正确的顺序为
name=value; [expires=date; [path=path]; [domain=domainname]; [secure]]
例如:在netingcn.com下设置一个名为cookiename,值为cookieValue,过期时间为一年的cookie
header("Set-Cookie: cookiename=cookieValue; expires=" . gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT", time() + (86400 * 365)) . '; path=/; domain=netingcn.com');
如果把domain、path放到expires前面,在firefox通过httpfox查看时,发现过期时间是“End Of Session”,但退出浏览器后重新打开,发现该cookie还是存在的,chrome显示的也是类似。虽说浏览器最终还是设置了一个一年过期的cookie,不过domain信息为当前页面的完整域,不是设置的顶级域。所以一定要注意顺序。
另外,如果用header的方式设置多个cookie,需要设置header的第二个参数为FALSE,下面是header函数的声明:
void header ( string string [, bool replace [, int http_response_code]] )
第二个参数replace 指明是替换掉前一条类似的标头还是增加一条相同类型的标头。默认为替换,但如果将其设为 FALSE 则可以强制发送多个同类标头。
欢迎转载,转载请注明文章出处,谢谢!
分类: PHP