我有一个登录类,用户登录到数据库然后我希望该方法将用户重定向到他们自己的个人资料页面。我希望使用header()重定向,尽管我在实现它时遇到了一些问题。
因为我想在HTMl启动后调用header()它不会重定向,是否有任何巧妙的方法将它包装到函数中并在需要时调用它?
答案 0 :(得分:3)
两种方式:
重新组织您的脚本以首先执行逻辑(包括header()
重定向)并输出HTML。
-OR -
仅在您的逻辑确定不需要重定向后才缓冲HTML输出并发送缓冲区内容。
第一种方法更可取。逻辑应尽可能与布局分开。您可以考虑实现MVC(模型,视图,控制器)模式,以提高代码的可维护性。
答案 1 :(得分:1)
在输出任何HTML之前,您应该完成之前的所有逻辑。不要检查是否需要在页面中间重定向。
否则,您可以启用output buffering,但我不会依赖它。
答案 2 :(得分:0)
如果你想包含header()重定向方法,那么代码必须在任何html标记之前,但是你可以使函数表现得像header(),例如
function redirect($link, $time) {
return "<meta http-equiv='refresh' content='$time;url=$link'>";
}
然后调用函数
echo redirect("http://google.com", "3");
将在3秒后重定向到google.com。