PHP 页面重定向

2022-08-30 06:44:35

PHP可以在执行函数后进行重定向调用吗?我正在创建一个函数,我希望它重定向到位于同一根文件夹中的文件。能做到吗?

if (...) {
    // I am using echo here.
} else if ($_SESSION['qnum'] > 10) { 
    session_destroy();
    echo "Some error occured.";
    // Redirect to "user.php".
}

答案 1

是的,您将使用标头函数。

/* Redirect browser */
header("Location: http://www.yourwebsite.com/user.php"); 
exit();

最好在它之后调用,以便它不会执行它下面的代码。exit()

另外,从文档中可以看出:

请记住,在发送任何实际输出之前,必须调用 header() ,无论是通过普通的 HTML 标记、文件中的空行还是从 PHP。使用 include()、 require()、 函数或其他文件访问函数读取代码,并且在调用 header() 之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。

这意味着您不应该在函数之前回显任何内容,因为这样做很可能会引发错误。此外,您还需要验证此代码是否在任何其他输出之前运行。header()


答案 2

使用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();
    }    
}

如果你需要正确处理相对路径,我已经为此编写了一个函数(但这超出了问题的范围)。


推荐