如何解除页面输出对setcookie的影响?

林继 PHP 技术 4,222 共写了508个字 (2008-06-05 21:22:03) 没有评论 打印 扫描二维码 百度未收录

服务器向浏览器种cookie是通过http相应的头Set-Cookie来实现的,例如:

Server: nginx/0.6.30
Date: Mon, 12 May 2008 04:58:21 GMT
Content-Type: text/html; charset=gbk
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.6
Vary: Accept-Encoding, Accept-Encoding
Content-Encoding: gzip
Set-Cookie: dznet_sid=CLu3BS; expires=Mon, 19-May-2008 04:59:43 GMT; path=/; domain=.discuz.net

假如在setcookie函数运行之前,php有输出,那么setcookie将会失效,经过实验,发现在php的顶部加入

ob_start();

即使有输出,setcookie也不会报错。如果使用了gzip压缩,则是

ob_start('ob_gzhandler');

测试方法

  1. <?php
  2. ob_start('ob_gzhandler');
  3. echo "x";
  4. var_dump(setcookie('x', time()));
  5. ?>

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >