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网上商城购物车设计代码分享
Feb 15 PHP
php生成静态页面的简单示例
Apr 17 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
thinkPHP分页功能实例详解
May 05 PHP
php文件包含的几种方式总结
Sep 19 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 PHP
php array_map()函数实例用法
Mar 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数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
Python 操作文件的基本方法总结
2017/08/10 Python
快速查询Python文档方法分享
2017/12/27 Python
对Python3中的input函数详解
2018/04/22 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
Python中pass的作用与使用教程
2020/11/13 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
假日旅行社实习自我鉴定
2013/09/24 职场文书
学校经典推荐信
2013/10/30 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
丧事主持词
2015/07/02 职场文书
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技