簡體   English   中英

PHP頭(位置:)重定向與根目錄

[英]PHP header(location:) redirect with root directory

有沒有辦法創建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');

但這對我來說很難,因為我有很多文件夾和子文件夾。 我有很多必須重定向的腳本。

謝謝。

所以這是示例文件夾結構

在此輸入圖像描述

所以content.php將有一個重定向到session.php的按鈕,我已經完成了,現在當session.php腳本有一個header('Location:'); 必須重定向到dashboard.php。 現在這是我的問題。 我現在不知道如何創建路徑

CERT ---->儀表板-----> dashboard.php

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

location應包含URL,而不是服務器文件路徑

理論上,您可以在應用程序的根目錄下創建一個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。

干杯和好運......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM