2013-07-14 3 views
0

내 문제는 다음과 같은 이유 때문에 다음과 같은 현상이 발생하는 이유와 해결 방법을 설명 할 수 있습니다. 그 놀라운 것입니다!포함 + 에코로 인해 혼란 스럽습니다.

내 문제의 길고 짧음은 내가 (주 스크립트 내에서 완전히 작동하는) 일부 코드를 작성했지만 여러 스크립트 내에이 코드를 넣어야한다는 것입니다. 따라서이 코드를 'include'파일로 만들려고했습니다.

include 파일을 실행하면 'echo "TEST"; " '$ _GET ['ffd '];' 변수가 HTML 페이지에 기록됩니다. 나는 왜 그것이 중요한지에 대해 매우 혼란 스럽다 - 다른 것들이 페이지에 쓰여져 야하므로 ... '$ _GET ['ffd '];의 {_} 아래에있는'echo ' HTML 페이지에 기록되지 않습니다.

주 스크립트 (포함하지 않고)에서 스크립트를 실행하면 파일을 찾아 HTML 페이지에 양식을 올바르게 배치하기 때문에 파일이 있다는 것을 알고 있습니다.

이것은 내가 사용하고있는 주 스크립트에 포함되어 있습니다. (가) 파일이 포함의

include("includes/forcedlfile.inc"); 

내용은 하단에 표시 PHP 스크립트의 내용과 동일하다 (I 메인 스크립트 코드를 이동할 때이 파일을 포함에) 내에서 실행했을 때 (즉, 복사 및 붙여 넣기) 기본 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

내 게시물에서 올 캡을 편집했지만 앞으로도 그렇게 할 수 있습니다. 그것의 조금 어려운 '포함'파일에서 무엇을 결정하고, 뭐죠. 질문을 편집하여 "주 스크립트"와 "포함 된 파일"을위한 두 개의 코드 블록을 만들 수 있습니까? –

+0

고맙습니다. 장래에 포럼에서 대담한 태그를 사용하겠습니다. 그러나 zpr이 대답하고 내 문제를 해결 했으므로 이미 수정 된 내용을 보면서 시간 낭비하지 않을 것입니다. :) – Justice

답변

1

이것은 dirname(__FILE__)이 현재 ./includes에있는 현재 파일의 디렉터리를 반환하므로 파일을 찾을 수 없기 때문일 수 있습니다.

dirname(dirname(__FILE__))을 사용하여 상위 디렉토리를 가져올 수 있습니다.

관련 문제