- 相关推荐
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中实现页面跳转12-06
PHP页面跳转实现技巧12-06
PHP页面跳转几种实现技巧12-04
PHP解决session死锁的解决方法03-02
利用PHP自定义多进制03-02
如何利用PHP时间转换Unix时间戳代码11-17
PHP获取远程文件大小的3种解决方法03-30
Dreamweaver跳转菜单行的技巧03-28
Dreamweaver创建跳转菜单教程02-25