PHP中Header位置错误导致SESSION丢失 不指定

Heck post in 编程杂谈 2010/08/24 15:59 评论(0) 阅读(1965) | |
         最近忙于一项PHP项目,忙的焦头烂额fear。昨天晚上加班到12点将模板解析部分进行了修改优化,今天早上开始测试,结果发现通过SESSION验证的所有功能都不能使用了。于是打开Firefox,使用firebug中的cookie插件查看,结果发现,session ID统统不见了,COOKIE里面更是一干二净,心中大惊26

   仔细排查下来,代码并无不妥。开始以为$GLOBALS和session冲突,但是经过试验发现二者没有影响。后来发现一个奇怪的问题,凡是有HTML代码块的地方,SESSION都会丢失。于是注释掉语句逐一排查。最后注释到header("content-type:text/html; charset=utf-8");的时候,SESSION不再丢失。于是怀疑是header语句失败才使Set-Cookie失败。于是将此语句前加一@ 屏蔽一切错误,但不见效果。于是怀疑Header语句位置不对,将其改到session_start()后,问题消失。

    开始以为是header语句出错导致的,后来发现,header语句在session_start()前就会引起错误,在修改代码时我移动了header的位置,但并未注意!终于找到病因了,分享下给有同样问题的朋友81


来源:Heck's Blog
地址:http://www.hecks.tk/php-lost-session/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
Tags: , ,