手机版

完美解决了PHP中无法修改表头信息的问题

时间:2021-11-17 来源:互联网 编辑:宝哥软件园 浏览:

我遇到过这个问题,在网上找到这个解决方案的时候,写PHP的朋友一定遇到过这样的问题:当通过header函数改变http协议头时,会出现如下格式的警告:复制代码如下:Warning无法修改头信息-已经发送的头。为什么呢?因为在使用header函数之前,你不能输出任何东西,包括输出函数的输出,比如echo或者var_dump。php前的空白。然而,有时我们不输出任何东西,但这个错误仍然会发生。这是因为我们的文档包含BOM签名,我们必须删除它。下面我们来讨论一下这个问题。请看测试代码:复制代码如下:phpheader(' content-type : text/html;charset=utf-8 ');die();这段代码是一个简单的标题,可以在?之前php中没有输出,也没有空格,但是网页中提示了不能修改表头信息的警告信息。这说明在?php之前有一些东西,但是编辑器没有显示出来。我们使用ultraEdit打开这个文件并切换到十六进制。我们可以看到,在正文的开头,有EFBBBF,后面是3C 3F 70 68 70(?Php),描述,在?在php之前,有输出信息,所以当你修改头部时,你会得到一条警告消息。

这是什么EFBBBF?它的名字叫BOM,字节顺序标记,这是Windows下的一个约定,用来标记文本是否为Unicode。记事本用这三个字节来判断一个文件是ANSI还是Unicode。知道问题的原因后,我们尝试移除BOM。用Dreamweaver打开这个php页面,然后进入页面设置(按Ctrl J),弹出如下窗口:

选择“包含Unicode签名(BOM)”并确认。现在,让我们使用UltraEdit打开这个文件的十六进制内容,如下图所示

可以看到现在BOM信息没了,文件直接从3C3F70开始。最后,我们刷新浏览器,发现现在没有Warning提示。问题解决了。

版权声明:完美解决了PHP中无法修改表头信息的问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。