如何调查 PHP 页面重定向不起作用的原因


How to investigate why a PHP page redirect is not working?

有人知道为什么下面的页面没有重定向吗?

我要重定向的 php 文件是:

<?php require_once("../includes/db_connection.php"); ?>
<?php require_once("../includes/functions.php"); ?>
<?php 
if (isset($_POST['submit'])) {
} else {
redirect_to("new_subject.php");
}
?> 

函数文件为:

<?php 
function redirect_url($new_location)
{
  header("location:".$new_location);
  exit;
}
?>

我已经删除了db_connection.php文件,看看这是否有任何区别,但事实并非如此。

除了您调用的函数和您拥有的函数名称不同("redirect_to"与"redirect_url")之外,在进行标头调用之前还有空格。 requires和下一个PHP块之间的空格是空格,并且在将空格发送到浏览器后将不允许设置标头。

我强烈建议您在PHP中打开错误日志记录,并在调查问题时引用错误日志。 您将在日志中看到函数调用错误和标头错误。

此外,不必要地打开和关闭PHP标签通常是非常糟糕的编码形式。 你可以把它清理成这样:

<?php
require_once("../includes/db_connection.php");
require_once("../includes/functions.php");
if (!isset($_POST['submit'])) {
    redirect_url("new_subject.php");
}
?>

请注意,您可以在需求和代码之间保持分离以帮助提高可读性,但由于您永远不会退出 PHP 块,因此您没有空格问题。

函数名称为redirect_url()

所以代码应该是

else {
redirect_url("new_subject.php");
}

你的函数调用应该是

redirect_url("new_subject.php");

而不是

redirect_to("new_subject.php");
你可以

试试这个,

    <?php 
        if (isset($_POST['submit'])) {
            //some thing do here
          } else {
                redirect_url("new_subject.php");
        }
        function redirect_url($new_location)
        {
            header("location:".$new_location);
            exit;
        }
    ?>