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(1) php开发环境配置
Feb 15 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
初识php MVC
Sep 10 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
PHP之预定义接口详解
Jul 29 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 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缓冲 output_buffering的使用详解
2013/06/13 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
js中getter和setter用法实例分析
2018/08/14 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Python中int()函数的用法浅析
2017/10/17 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
linux系统都有哪些运行级别
2016/03/26 面试题
介绍一下JMS编程步骤
2015/09/22 面试题
物业经理自我鉴定
2014/03/03 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
python删除csv文件的行列
2021/04/06 Python
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis