PHP页面重定向

PHP page redirect

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
 if {
      //i am using echo here
 }

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


是的,您将使用header函数。

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

最好在单词后立即调用exit(),这样下面的代码就不会被执行。

此外,从文件中:

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

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


使用javascript作为故障保护将确保用户被重定向(即使头已经发送)。干得好:

1
2
3
4
5
6
7
8
9
// $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();
    }    
}

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