对包含+ echo的事物感到困惑

时间:2013-07-14 23:29:29

标签: php include echo

我的问题如下,如果有人可以帮助解释为什么会发生以下情况,以及如何解决它;那太棒了!

我的问题的长期和短缺是我编写了一些代码(在主脚本中完全有效!),但我需要将此代码放在多个脚本中。因此,我尝试将此代码转换为“包含”文件。

执行包含文件时,只有'echo“TEST”;'来自'$ _GET ['ffd'];'变量被写入HTML页面。我很困惑为什么这很重要 - 因为其他事情应该写在页面上,而不是'$ _GET ['ffd']的{_ _}下面的'echo'语句;'永远不会写入HTML页面。

我知道文件存在是因为当脚本在主脚本中运行时(没有包含),它会找到文件并正确地将表单放在HTML页面上。

这是我一直使用的主脚本中的包含。 (当我将代码从主脚本移动到包含文件时)

include("includes/forcedlfile.inc");

当在主PHP脚本或包含的.inc文件中运行时,包含文件的内容对于底部显示的PHP脚本的内容(即复制和粘贴)是IDENTICAL。

正在执行的脚本:

    //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”,并且只有一个表单提交按钮 - 当我应该有两个时。

1 个答案:

答案 0 :(得分:1)

这可能是因为dirname(__FILE__)正在返回当前文件的目录,该目录现在位于./includes,因此无法找到该文件。

您可以使用dirname(dirname(__FILE__))获取父目录。