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 相关文章推荐
php实例分享之html转为rtf格式
Jun 02 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
php生成RSS订阅的方法
Feb 13 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
PHP在线打包下载功能示例
Oct 15 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
python中引用与复制用法实例分析
2015/06/04 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
毕业生求职简历中的自我评价
2013/10/18 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
公司会计岗位职责
2014/02/13 职场文书
擅自离岗检讨书
2014/09/12 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
研讨会通知
2015/04/27 职场文书
活动总结书怎么写
2015/05/11 职场文书
第一书记观后感
2015/06/08 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书