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

4

1 回答 1

1

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

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

于 2013-07-14T23:51:01.823 回答