PHP Header失效的原因分析及解决方法


Posted in PHP onNovember 16, 2016

在PHP中用header("location:test.php")进行跳转要注意以下几点:

1、location和“:”号间不能有空格,否则会出错。

2、在用header前不能有任何的输出,包括include的页面中标签“?>”后不能有空格!!

3、header后的PHP代码还会被执行。

续:

问题:header函数前输入内容

一般来说在header函数前不能输出html内容,类似的还有setcookie() 和 session 函数,这些函数需要在输出流中增加消息头部信息。如果在header()执行之前有echo等语句,当后面遇到header()时,就会报出 “Warning: Cannot modify header information ? headers already sent by ….”错误。就是说在这些函数的前面不能有任何文字、空行、回车等,而且最好在header()函数后加上exit()函数。例如下面的错误写法,在 两个php代码段之间有一个空行:

//这里应该是一个空行

原因:

PHP脚本开始执行 时,它可以同时发送http消息头部(标题)信息和主体信息. http消息头部(来自 header() 或SetCookie() 函数)并不会立即发送,相反,它被保存到一个列表中. 这样就可以允许你修改标题信息,包括缺省的标题(例如Content-Type 标题).但是,一旦脚本发送了任何非标题的输出(例如,使用 HTML 或 print()调用),那么PHP就必须先发送完所有的Header,然后终止 HTTPheader.而后继续发送主体数据.从这时开始,任何添加或修改Header信息的试图都是不允许的,并会发送上述的错误消息之一。

解决方法:

修改php.ini打开缓存(output_buffering),将output_buffering=0修改成output_buffering=4096

或 者在程序中使用缓存函数ob_start(),ob_end_flush() 等。原理是:output_buffering被启用时,在脚本发送输出时,PHP并不发送HTTPheader。相反,它将此输出通过管道(pipe) 输入到动态增加的缓存中(只能在PHP4.0中使用,它具有中央化的输出机制)。你仍然可以修改/添加header,或者设置cookie,因为 header实际上并没有发送。当全部脚本终止时,PHP将自动发送HTTP header到浏览器,然后再发送输出缓冲中的内容。

以上这篇PHP Header失效的原因分析及解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
php email邮箱正则
Oct 08 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
10个php函数实用却不常见
Oct 13 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
php实现的xml操作类
Jan 15 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 #PHP
php导出csv文件,可导出前导0实例代码
Nov 16 #PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 #PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 #PHP
Smarty模板常见的简单应用分析
Nov 15 #PHP
Smarty日期时间操作方法示例
Nov 15 #PHP
Fleaphp常见函数功能与用法示例
Nov 15 #PHP
You might like
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
js微信分享实现代码
2020/10/11 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
Python实现的爬虫功能代码
2017/06/24 Python
python模糊图片过滤的方法
2018/12/14 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
Python中psutil的介绍与用法
2019/05/02 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
司机检讨书
2014/02/13 职场文书
小班下学期评语
2014/05/04 职场文书
学习十八大标语
2014/10/09 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
消防演习感想
2015/08/10 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL