PHP头(位置:)重定向与根目录

时间:2016-11-17 09:11:38

标签: php

有没有办法创建一个从header('Location:');开始的路径。

例如:

formaction="/cert/forms/sessions/session-inc-info.php" 

include($_SERVER['DOCUMENT_ROOT'].'/cert/forms/sessions/session-inc-info.php');  

cert是我的根目录文件夹

我一直在尝试像

这样的代码
header('Location:'.$_SERVER['DOCUMENT_ROOT'].'/cert/forms/sessions/session-inc-info.php);

header('Location:/cert/forms/sessions/session-inc-info.php');

对我来说唯一有用的就是使用../

header('Location:../../../session-inc-info.php');

但这对我来说很难,因为我有很多文件夹和子文件夹。 我有很多必须重定向的脚本。

感谢。

所以这是示例文件夹结构

enter image description here

所以content.php会有一个重定向到session.php的按钮,我已经这样做了,现在session.php脚本必须有一个必须重定向的header('Location:');到dashboard.php。现在这是我的问题。我现在不知道如何创建像

这样的路径

cert ----> dashboard -----> dashboard.php

2 个答案:

答案 0 :(得分:4)

header("Location: http://".$_SERVER['HTTP_HOST'].$formaction;

位置应包含URL,而不是服务器文件路径

答案 1 :(得分:0)

  

您可以 理论上 在应用程序的根目录下创建一个PHP文件,并将其称为任何您喜欢的内容:说redirect.php。然后在这个redirect.php内,你可以放一些看起来像这样的代码:

<?php
    // CREATE AN ARRAY THAT WITH NUMERIC KEY
    // THAT WILL CORRESPOND TO THE FILE YOU WISH TO REDIRECT TO (ACTUALLY LOAD)
    // SINCE THIS IS A PSEUDO REDIRECT:
    $fileMap            = array(
        0   => "./file-1.php",
        1   => "./file-2.php",
        2   => "./file-3.php",
        3   => "./file-4.php",
        4   => "./file-5.php",
        5   => "./file-6.php",
        6   => "/cert/forms/sessions/session-inc-info.php",
        7   => "./../../session-inc-info.php",  //<== YOU MAY KEEP ADDING TO LIST
    );

    // CHECK THAT THERE IS A GET PARAM WITH NAME: to
    if(isset($_GET['to'])){
        $fileKey        = $_GET['to'];          //<== GET THE `to` PARAM FROM $_GET
        $loadableFile   = $fileMap[$fileKey];   //<== TRANSLATE `to` KEY TO A LOADABLE FILE

        // IF THE FILE [$loadableFile] EXISTS, LOAD IT
        // OTHERWISE REDIRECT TO MAIN-APPLICATION PAGE (HOMEPAGE)
        if(file_exists($loadableFile)){
            require_once $loadableFile;
        }else{
            header("location: index.php");      //<== ASSUMES index.php IS THE MAIN FILE.
            exit;
        }
    }

    // IF ALL FAILS, STILL REDIRECT TO THE MAIN-APPLICATION PAGE
    header("location: index.php");              //<== ASSUMES index.php IS THE MAIN FILE.
  

然后,在您希望执行重定向的每个页面上,您可以执行以下操作:

<?php
    // ASSUMING YOU WANT TO RE-DIRECT TO: `./../../session-inc-info.php`
    // AS YOU CAN SEE FROM THE `$fileMap` ARRAY, `./../../session-inc-info.php`
    // HAS THE KEY OF "7"
    // NOW ALL YOU CAN DO IS SIMPY APPEND "?to=7" TO `redirect.php` 
    // IN THE `header()` METHOD LIKE THIS:
    header("location: redirect.php?to=7"); 
    exit;
    /*EXPECTED TO LOAD THE FILE: `./../../session-inc-info.php`
  

注意:
这实际上不是重定向(因为它基本上只是从给定的位置/路径加载[包含]文件,但是因为它似乎正在尝试加载一些文件,如:/cert/forms/sessions/session-inc-info.php,假设这可能是一个选项。 要做一个真正的重定向:只需使用header()函数直接传递它的确切URL-Location要重定向。

干杯和好运......