PHP重定向发送标题后?

7 html javascript php

如果设置了变量等,我有一个需要重定向页面的函数...

问题是,这个函数位于php页面的底部.

这意味着,我输出了很多信息,所以我得到一个标题警告.

"警告 - 已经发送的标题......"

发送标头后有没有办法重定向?

谢谢

dam*_*net 23

您应该做的是放在ob_start()页面的最开头,最后放在页面的最开头ob_flush().这样您就不会遇到已发送错误的标头.

请参阅这些功能以供进一步参考

  • 最后的`ob_flush()`是隐式的,可以省略.这样做的好处是,如果你在应用程序的控制流程中的某个地方`ob_flush()之后添加输出内容,那么你不会意外地回到这个问题的几个月. (3认同)

Pis*_*3.0 13

有方法,但它们基本上是解决方法:

最简单的是meta http-equiv:

<meta http-equiv="Refresh" content="0;http://www.example.com/newlocation">
Run Code Online (Sandbox Code Playgroud)
  • 有些浏览器在<head>元素之外不会喜欢这个,并且会陷入怪癖模式

或者,您可以尝试JavaScript重定向:

<script>
    window.location = 'http://www.example.com/newlocation';
</script>
Run Code Online (Sandbox Code Playgroud)
  • 如果没有JavaScript,这显然是行不通的.

  • 我会使用jscript重定向,或者更好的是一个干净的重构,以便在所有业务逻辑处理完每个数据后做出输出,并做出所有决定,以便在任何输出之前你可以进行重定向或者如果你需要由于数据的长流程而做一些输出,人们可以通过这种方式重构它,以便在完成任何输出之前准备好所需的计算. (2认同)