当您尝试将具有标题:位置的用户重定向到页面上已有“输出”的其他页面时,PHP将显示消息:标题已发送。
创建一个函数是一个很好的解决方案,并在任何需要的地方调用该函数(即使在页面底部)?
谢谢!
示例:
function redirectMe($location){
header('Location:'.$location);
}
//HTML
//Redirect user:
redirectMe('http://www.google.com');
答案 0 :(得分:2)
不,这不起作用,因为您已经通过调用该函数来输出HTML。
如果要使用重定向,则必须在将ANYTHING输出给用户之前。在输出任何内容之前检查变量,要么是这样做,要么就是这样,或者决定不重定向用户 - 然后输出所有的HTML。
编辑:尽管如此,如果你无法弄清楚如何检查重定向/停留的条件,你可以把所有的HTML放到一个字符串中,然后在页面的末尾回显它 - 但是好的,这样做比检查正确的条件并从那里开始要多得多。
答案 1 :(得分:2)
一个好的解决方案是使用ob_start()
和ob_end_clean()
ob_start();
// all your PHP/HTML codes go there.
$output = ob_get_contents();
ob_end_clean();
答案 2 :(得分:2)
如果在执行重定向的头功能之前有任何内容输出到浏览器,则会给出已发送的头文件错误。如果不需要向用户显示输出,则可以在页面开头使用ob_start()函数来缓冲发送到浏览器的输出并在标题后使用ob_flush。您可以根据页面流程使用它