2013-07-14 3 views
0

Ниже приведена моя проблема, если кто-нибудь может объяснить, почему происходит следующее и как это исправить; это было бы потрясающе!Confused over something with with includes + echo

Долг и недостаток моей проблемы в том, что я написал код (который полностью работает, когда в основном скрипте!), Но мне нужно поместить этот код в несколько сценариев. Поэтому я попытался сделать этот код в файле «include».

Когда файл включения выполнен, только «echo» TEST »; из '$ _GET [' ffd ']; переменная записывается на страницу HTML. Я очень смущен, почему это имеет значение, поскольку другие вещи должны быть записаны на страницу независимо от ... выражений «эха» ниже {_ _} из $ _GET ['ffd']; никогда не записываются на страницу 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» появляющегося на экране, и только кнопка отправки формы ONE - когда у меня должно быть два.

+0

Я удалил All-caps из вашего сообщения, но вы тоже можете это сделать в будущем. Его немного сложно определить, что содержится в файле «include», а что нет. Можете ли вы изменить свой вопрос, так что есть два блока кода, один для «основного сценария», а другой для «включенного файла»? –

+0

Спасибо, я буду использовать ярлыки форума в будущем, однако zpr ответил и исправил мою проблему, поэтому я больше не буду тратить время на то, чтобы вы посмотрели на то, что уже было исправлено :) – Justice

ответ

1

Возможно, это связано с тем, что dirname(__FILE__) возвращает каталог текущего файла, который теперь находится в ./includes, поэтому он не может найти файл.

Чтобы получить родительский каталог, вы можете использовать dirname(dirname(__FILE__)).