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

  近日忙于一项PHP项目,忙的焦头烂额。昨天晚上加班到12点将模板解析部分进行了修改优化,今天早晨开始测试,结果发现通过SESSION验证的所有功能都不能使用了。于是打开Firefox,使用firebug中的cookie插件查看,结果发现,session ID统统不见了,COOKIE里面更是一干二净,心中大惊。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值