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 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
destoon数据库表说明汇总
Jul 15 PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 PHP
PHP会话处理的10个函数
Aug 11 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
前端必学之PHP语法基础
Jan 01 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 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
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
Django中URL的参数传递的实现
2019/08/04 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
销售自我评价
2013/10/22 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
Python面向对象之成员相关知识总结
2021/06/24 Python
Python3中最常用的5种线程锁实例总结
2021/07/07 Python