0

私の問題は次のとおりです。誰かが次のことが起こっている理由とそれを修正する方法を説明するのを助けることができれば; それは素晴らしいでしょう!

私の問題の長短は、いくつかのコードを書いたことです (メイン スクリプト内で完全に機能します!) が、このコードを複数のスクリプト内に配置する必要があります。したがって、このコードを「インクルード」ファイルにしようとしました。

インクルード ファイルが実行されると、「echo "TEST";」のみが実行されます。「$_GET['ffd'];」から 変数が HTML ページに書き込まれます。なぜそれが重要なのかについて非常に混乱しています-他のことは関係なくページに書き込む必要があるため... '$_GET['ffd'];' の { _ _} の下の 'echo' ステートメント HTML ページに書き込まれることはありません。

スクリプトがメイン スクリプト内で (インクルードなしで) 実行されると、ファイルが検出され、フォームが HTML ページに正しく配置されるため、ファイルが存在することがわかります。

これは、私が使用しているメイン スクリプトのインクルードです。(コードをメイン スクリプトからインクルード ファイルに移動する場合)

include("includes/forcedlfile.inc");

インクルード ファイルの内容は、メインの PHP スクリプトまたはインクルードされた .inc ファイル内で実行された場合、一番下に示されている (つまり、コピーして貼り付けられた) PHP スクリプトの内容と同一です。

実行中のスクリプト:

    //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」が 2 つ表示され、フォーム送信ボタンが 1 つだけ表示されます。

4

1 に答える 1

1

これはおそらく、dirname(__FILE__)が にある現在のファイルのディレクトリを返す./includesため、ファイルを見つけることができないためです。

dirname(dirname(__FILE__))親ディレクトリを取得するために使用できます。

于 2013-07-14T23:51:01.823 に答える