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 带逗号千位符数字的处理方法
Jan 10 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
php常用的url处理函数总结
Nov 19 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP连续签到功能实现方法详解
Dec 04 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开发需要注意的安全问题
2010/09/01 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP引用的调用方法分析
2016/04/25 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
Python环境变量设置方法
2016/08/28 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
JDO的含义
2012/11/17 面试题
过滤器的用法
2013/10/08 面试题
基于Python 函数和方法的区别说明
2021/03/24 Python
大二自我鉴定范文
2013/10/05 职场文书
运动会稿件300字
2014/02/14 职场文书
《恐龙》教学反思
2014/04/27 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
海上钢琴师的观后感
2015/06/11 职场文书