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.MVC的模板标签系统(五)
Sep 05 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
在VS2008中编译MYSQL5.1.48的方法
Jul 03 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
在yii中新增一个用户验证的方法详解
Jun 20 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
PHP写日志的实现方法
Nov 05 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP加MySQL消息队列深入理解
Feb 27 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守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
js文件缓存之版本管理详解
2013/07/05 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python实现的HTTP并发测试完整示例
2020/04/23 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
python颜色随机生成器的实例代码
2020/01/10 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
西班牙手机之家:Phone House
2018/10/18 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
建筑工程管理专业自荐信范文
2013/12/28 职场文书
初婚未育证明
2014/01/15 职场文书
高一新生军训感言
2014/03/02 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
python中如何对多变量连续赋值
2021/06/03 Python