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生成扭曲及旋转的验证码图片
Jun 07 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
PHP中的闭包(匿名函数)浅析
Feb 07 PHP
PHP扩展开发入门教程
Feb 26 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
利用php生成验证码
Feb 23 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
PHP全局使用Laravel辅助函数dd
Dec 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
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
Node.js编码规范
2014/07/14 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
python print出共轭复数的方法详解
2019/06/25 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
劳资专员岗位职责
2013/12/27 职场文书
房产买卖委托公证书
2014/04/04 职场文书
促销活动总结范文
2014/04/30 职场文书
财政局个人总结
2015/03/04 职场文书