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分页显示制作详细讲解
Oct 09 PHP
AJAX for PHP简单表数据查询实例
Jan 02 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 PHP
php的4种常用运行方式详解
Dec 22 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 PHP
TP5框架简单登录功能实现方法示例
Oct 31 PHP
php实例化对象的实例方法
Nov 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
php无限极分类递归排序实现方法
2014/11/11 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
实用自动化运维Python脚本分享
2018/06/04 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
python如何安装下载后的模块
2020/07/03 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
什么是数组名
2012/05/10 面试题
应届毕业生求职自荐书
2014/01/03 职场文书
小学生安全责任书
2014/07/25 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
React如何创建组件
2021/06/27 Javascript