php语言

PHP利用header跳转失效的解决方法

时间:2023-04-13 10:45:34 偲颖 php语言 我要投稿
  • 相关推荐

PHP利用header跳转失效的解决方法

  主要介绍了PHP利用header跳转失效的解决方法,归纳了这类问题的注意事项,非常具有实用价值,需要的朋友可以参考下PHP利用header跳转失效的解决方法,就跟随小编一起去了解下吧!

  PHP利用header跳转失效的解决方法1

  一、问题:

  今天header("Location: $url"),以往跳转总是可以的,今天却不动,只是输出结果,以往自己要确认检查,$url的值获取的是否正确,所以在前面加了echo $url;来调试用,结果就导致了header函数的无效。

  二、解决方法:

  在PHP中用header("location:test.php")进行跳转要注意以下几点:

  1、location和“:”号间不能有空格,否则会出错.//phpfensi.com。

  2、在用header前不能有任何的输出,包括include的页面中标签后不能有空格。

  3、header后的PHP代码还会被执行。PHP的 header 跳转之前不能有任何内容输出,因为PHP开始执行的时候就已经向浏览器送出HTTP头信息,之后就不再允许更改了。但是如果必须要在输出之后再处理header信息的`话可以使用flush来缓存一下要发送的内容,等到header继续再发送内容。或者一个更简单的办法,修改php.ini,找到output buffering=Off 修改为 output buffering=4096。

  PHP利用header跳转失效的解决方法2

  问题:

  一般来说在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页面跳转的技巧09-20

PHP中实现页面跳转04-19

PHP页面跳转实现技巧04-19

php的header和asp中的redirect比较09-20

PHP页面跳转几种实现技巧04-15

利用PHP模板引擎smarty08-08

PHP页面跳转到另一个页面的方法09-22

利用PHP实现短域名互转08-06

利用PHP校验ISBN码函数08-08