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 相关文章推荐
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
php数组键值用法实例分析
Feb 27 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
php中的登陆login实例代码
Jun 20 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
Yii框架where查询用法实例分析
Oct 22 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP http请求超时问题解决方案
Nov 13 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多个字符串替换成同一个的解决方法
2013/06/18 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
XML的代替者----JSON
2007/07/21 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
跟老齐学Python之复习if语句
2014/10/02 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Linux开机引导的步骤是什么
2014/02/26 面试题
非功能性需求都包括哪些方面
2013/10/29 面试题
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
防火标语大全
2014/10/06 职场文书