PHP 页面重定向
PHP可以在执行函数后进行重定向调用吗?我正在创建一个函数,我希望它重定向到位于同一根文件夹中的文件。能做到吗?
if (...) {
// I am using echo here.
} else if ($_SESSION['qnum'] > 10) {
session_destroy();
echo "Some error occured.";
// Redirect to "user.php".
}
PHP可以在执行函数后进行重定向调用吗?我正在创建一个函数,我希望它重定向到位于同一根文件夹中的文件。能做到吗?
if (...) {
// I am using echo here.
} else if ($_SESSION['qnum'] > 10) {
session_destroy();
echo "Some error occured.";
// Redirect to "user.php".
}
是的,您将使用标头函数。
/* Redirect browser */
header("Location: http://www.yourwebsite.com/user.php");
exit();
最好在它之后调用,以便它不会执行它下面的代码。exit()
另外,从文档中可以看出:
请记住,在发送任何实际输出之前,必须调用 header() ,无论是通过普通的 HTML 标记、文件中的空行还是从 PHP。使用 include()、 require()、 函数或其他文件访问函数读取代码,并且在调用 header() 之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。
这意味着您不应该在函数之前回显任何内容,因为这样做很可能会引发错误。此外,您还需要验证此代码是否在任何其他输出之前运行。header()
使用javascript作为故障保护将确保用户被重定向(即使标头已经发送)。给你:
// $url should be an absolute url
function redirect($url){
if (headers_sent()){
die('<script type="text/javascript">window.location=\''.$url.'\';</script>');
}else{
header('Location: ' . $url);
die();
}
}
如果你需要正确处理相对路径,我已经为此编写了一个函数(但这超出了问题的范围)。