2013-07-14 85 views
0

我的問題如下,如果有人可以幫助解釋爲什麼以下情況正在發生,以及如何解決它;這將是驚人的!感到困惑的東西發生與包括+回聲

我的問題的長短,是我寫了一些代碼(在主腳本內完全起作用!),但我需要將此代碼放在多個腳本中。所以我試圖把這個代碼放到'include'文件中。

當包含文件被執行時,只有'echo'TEST「;」從'$ _GET ['ffd'];'變量被寫入HTML頁面。我非常困惑,爲什麼它很重要 - 因爲其他東西應該寫入頁面,無論...'_ _GET ['ffd'];''的{_ _}之下的'echo'語句;''從不寫入HTML頁面。

我知道這些文件存在,因爲當腳本在主腳本(沒有包含)內運行時,它會查找這些文件並將這些表單正確放置在HTML頁面上。

這是包含在我一直在使用的主腳本中。 (當我的代碼從主腳本移到其中包括文件)

include("includes/forcedlfile.inc"); 

的,其中包括文件的內容是相同的,在底部顯示的PHP腳本的內容(即,複製和粘貼)時內跑主PHP腳本或包含的.inc文件。

腳本執行:

//THE BIT THAT ALWAYS ECHO's TO THE HTML PAGE 
if(isset($_GET['ffd'])) 
{ 
    echo "TEST"; 

      //OTHER THINGS NOT RELEVANT HERE 
} 

    //CODE THAT SHOULD BE EXECUTED REGARDLESS OF BEING WITHIN THE MAIN BODY OF THE SCRIPT OR WITHIN AN INCLUDES FILE 
$homeworkid_dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'homeworktasks' . DIRECTORY_SEPARATOR . $chosenhomework; 
if (file_exists($homeworkid_dir)) 
{ 
    echo "<b>Download Homework Attachments: </b>"; 
    $attachmentno = 0; 
    $contents = array_diff(scandir($homeworkid_dir, 1), array('..', '.', '.htaccess')); 
    foreach($contents as $file) 
    { 
     $attachmentno = $attachmentno + 1; 
     $file_dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'homeworktasks' . DIRECTORY_SEPARATOR . $chosenhomework . DIRECTORY_SEPARATOR . $file; 
     $btn = explode(DIRECTORY_SEPARATOR, $file_dir); 
     $btn = end($btn); 
     $dllink = end($fsh); 

    //ONLY WRITTEN TO PAGE WHEN WITHIN THE ORIGINAL SCRIPT, NOT 'INCLUDE' FILE 
     echo "<form action='".$dllink."?tsk=".$homeworkid."&ffd=y' method='post'> 
     Attachment ".$attachmentno.": 
     <input type='hidden' name='dldir' value='".$file_dir."'> 
     <input type='hidden' name='homeworkid' value='".$homeworkid."'> 
     <input type='submit' value='Click Here To Download: ".$btn."'> 
     </form>"; 
    } 
} 

如果我把內部的文件包括主腳本並提交表單(從主腳本)我結束了兩批「TEST」出現的在屏幕上,只有一個表單提交按鈕 - 當我應該有兩個

+0

我已經編輯了您的帖子中的全部大寫,但您可以在將來也這樣做。它有點難以確定「包含」文件中的內容,什麼不是。你可以編輯你的問題,所以有兩個代碼塊,一個用於「主要腳本」,另一個用於「包含文件」? – 2013-07-14 23:45:30

+0

謝謝,我將來會使用論壇的黑體標籤,但是zpr已經回答並解決了我的問題,所以我不會浪費任何時間,讓你看看已經修復過的東西:) – Justice

回答

1

這可能是因爲dirname(__FILE__)正在返回當前文件的目錄,該文件現在位於./includes,因此無法找到該文件。

您可以使用dirname(dirname(__FILE__))來獲取父目錄。