php - header() 在必须从超过 2 个嵌套文件夹重定向到页面时不起作用

php - header() does not work when it must redirect to the page from more then 2 nested folders

我有一个 .php 文件,在提交表单时会调用该文件。通过在该文件中使用 isset($_POST["submit"]) {} else { Header() },我试图阻止用户从浏览器直接向该文件键入 URL。当我遇到这样的情况时效果很好:

提交表单的位置 .php 文件

root_folder/folder_level_1/folder_level_2/form_submitting.php

header() 重定向到的索引页面的位置

root_folder/folder_level_1/index.php

form_submitting.php的.php代码为:

<?php 
session_start();

    if(isset($_POST["submit"])) {
        // some code
    } else {
        header("Location: ../index.php");
        exit();
?>

但在这种情况下不起作用:

提交表单的位置 .php 文件

root_folder/folder_level_1/folder_level_2/folder_level_3/form_submitting.php

header() 重定向到的索引页面的位置

root_folder/folder_level_one/index.php

form_submitting.php的.php代码为:

<?php 
session_start();

    if(isset($_POST["submit"])) {
        // some code
    } else {
        header("Location: .../index.php");
        exit();
?>

我也尝试将 header() 参数更改为:

header("Location: ...index.php");
header("Location: .././index.php");
header("Location: ./../index.php");
header("Location: ../.index.php");
header("Location: ./..index.php");
header("Location: ".$_SERVER["DOCUMENT_ROOT"]."/folder_level_1/index.php");

而且,它仍然不起作用。它在网页上显示 Access forbidden! 而不是将我重定向到 index.php.

如何解决这个问题?非常感谢您的帮助。

你忘了写如果。应该是 if(isset($_POST['submit']...

       if( isset($_POST["submit"])) {
            // some code
        } else {
            header("Location: ../../index.php");
            exit();
    ?>

你忘记了结束引号和../index.php如果你想向上一个目录。

尝试,如果你想去 2 个文件夹。

header("Location: ../../index.php");