专栏首页竹清助手php中的header跳转常用方式

php中的header跳转常用方式

header("Location:")作为php的转向语句。其实在使用中,他有几点需要注意的地方。 1、要求header前没有任何输出 但是很多时候在header前我们已经输出了好多东西了,此时如果再次header的话,显然是出错的,在这里我们启用了一个ob的概念,ob的意思是在服务器端先存储有关输出,等待适当的时机再输出,而不是像现在这样运行一句,输出一句,发现header语句就只能报错了。 具体的语句有: ob_start(); ob_end_clean();ob_flush();......... 2、在header("Location:")后要及时exit 否则他是会继续执行的,虽然在浏览器端你看不到相应的数据出现,但是如果你进行抓包分析的话,你就会看到下面的语句也是在执行的。而且被输送到了浏览器客户端,只不过是没有被浏览器执行为html而已(浏览器执行了header进行了转向**作)。 所以,标准的使用方法是: ob_start(); ........ if ( something ){ ob_end_clean(); header("Location: yourlocation"); exit; else{ .......... ob_flush(); //可省略 要想在header前有输出的话,可以修改php.ini文件 output_handler =mb_output_handler 或 output_handler =on Output Control 函数可以让你**控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。 一、 相关函数简介: 1、Flush:刷新缓冲区的内容,输出。 函数格式:flush() 说明:这个函数经常使用,效率很高。 2、ob_start :打开输出缓冲区 函数格式:void ob_start(void) 说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。 3 、ob_get_contents :返回内部缓冲区的内容。 使用方法:string ob_get_contents(void) 说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。 4、ob_get_length:返回内部缓冲区的长度。 使用方法:int ob_get_length(void) 说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。 5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。 使用方法:void ob_end_flush(void) 说明:这个函数发送输出缓冲区的内容(如果有的话)。 6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区 使用方法:void ob_end_clean(void) 说明:这个函数不会输出内部缓冲区的内容而是把它删除! 7、ob_implicit_flush:打开或关闭绝对刷新 使用方法:void ob_implicit_flush ([int flag]) 说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush() ob_start() 开始输出缓冲, 这时PHP停止输出, 在这以后的输出都被转到一个内部的缓冲里. ob_get_contents() 这个函数返回内部缓冲的内容. 这就等于把这些输出都变成了字符串. ob_get_ length() 返回内部缓冲的长度. ob_end_flush() 结束输出缓冲, 并输出缓冲里的内容. 在这以后的输出都是正常输出. ob_end_clean() 结束输出缓冲, 并扔掉缓冲里的内容. 举个例子, var_dump()函数输出一个变量的结构和内容, 这在调试的时候很有用. 但如果变量的内容里有 < , > 等HTML的特殊字符, 输出到网页里就看不见了. 怎么办呢? 用输出缓冲函数能很容易的解决这个问题. ob_start(); var_dump($var); $out = ob_get_contents(); ob_end_clean(); 这时var_dump()的输出已经存在 $out 里了. 你可以现在就输出: echo '<pre>' . htmlspecialchars($out) . '</pre>' ; 或者等到将来, 再或者把这个字符串送到模板(Template)里再输出.

本文分享自微信公众号 - 竹清助手(zhuqing_help)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 新的一年里时间与效率的管理

    一年之计在于春,又要开始耕耘了,人生苦短,也许你的超越和突破就在今年。不要想着一年能做很多事情,能完成一件大事,就不容易了。要去抓全年的重点,你今年重点要做的事...

    貟王軍
  • Tesseract-OCR识别中文与训练字库实例

    关于中文的识别,效果比较好而且开源的应该就是Tesseract-OCR了,所以自己亲身试用一下,分享到博客让有同样兴趣的人少走弯路。 文中所用到的身份证图片资源...

    貟王軍
  • 信息化服务范围

    网站设计要能充分吸引访问者的注意力,让访问者产生视觉上的愉悦感。因此在网页创作的时候就必须将网站的整体设计与网页设计的相关原理紧密结合起来。网站设计是将策划案中...

    貟王軍
  • php输出控制函数和输出函数生成静态页面

    本文实例为大家分享了php输出控制函数和输出函数生成静态页面的具体代码,供大家参考,具体内容如下

    砸漏
  • PHP中的输出缓冲控制

    在 PHP 中,我们直接进行 echo 、 或者 print_r 的时候,输出的内容就会直接打印出来。但是,在某些情况下,我们并不想直接打印,这个时候就可以使用...

    硬核项目经理
  • WebPack错误集

    webpack-dev-server跨域设置反向代理出现404错误 问题栈 ? 分析解决 看到404后,再次看了下启动服务配置文件,估计是pathRewrite...

    用户1148881
  • RSA算法及一种"旁门左道"的攻击方式

    RSA 算法一种常见的非对称加密算法, 常用来对一些在网络上传输的敏感信息进行加密, 本文将概述RSA算法的流程以及一种意想不到的”旁门左道”的攻击方式.

    程序猿石头
  • 物联网如何改善远程患者监护解决方案的数据访问

    除了可穿戴性和数据质量外,及时的数据访问是远程病人监护健康护理解决方案成功的关键决定因素。强大的物联网架构可以增强数据访问结果。

    用户4122690
  • 文件碎片对Flash性能的影响

    阅读本文前,建议先阅读下这两篇文章:《NAND Flash基础知识简介》、《Flash写入性能下降问题》。

    coderhuo
  • 工程师代码:用于工程计算的可重用开放式学习模块(CS Society)

    科学与工程专业的本科课程至少包括一门基础编程课程,但这些课程很少以情境化的形式呈现,其中计算是该学科中思考和学习的工具。我们创建了一系列学习模块,以将计算技术嵌...

    shellmik

扫码关注云+社区

领取腾讯云代金券