2016-11-17 70 views
2

有沒有辦法創建一個header('Location:');路徑開始到根目錄。PHP頭(位置:)重定向到根目錄

例子一樣:

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

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

證書是我的根目錄文件夾

我一直試圖代碼像

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。現在這是我的問題。現在我不如何創建像

證書---->儀表板-----> dashboard.php路徑

+0

顯示文件夾結構。 @Vincent – PassionInfinite

+0

@PassionInfinite好的...我將製作一個示例文件夾結構。 –

+0

主文件的名稱 - 您的應用程序的入口點是什麼?像'index.php'或類似的東西。它住在哪裏?假設它存在於'CERT'中,要使用相對路徑從該位置重定向到'dashboard.php',你可以這樣做:'header(「Location:./dashboard/dashboard.php」)''session也是這樣。 php'或'content.php'。但不是那些不應該是幫助文件的文件,而是那些會暴露給公共(顯示)的文件? – Poiz

回答

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

位置應該包含URL,而不是服務器文件路徑

+1

謝謝。這行得通。對於我'header(「Location:http://」。$ _ SERVER ['HTTP_HOST']。'/ cert/forms/sessions/session-inc-info.php?id-inc ='。$ id);' –

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` 

注:
氏s並不是一個真正的重定向(因爲它基本上只是從給定的位置/路徑加載[包括]文件,但是因爲它似乎嘗試加載一些文件,如:/cert/forms/sessions/session-inc-info.php,因此可以認爲這可能是一個選項。要做一個真正的重定向:只需使用header()函數直接傳遞給它確切的URL-要重定向到的位置。從根目錄

歡呼和好運...

+0

謝謝回答.. –