我的问题如下,如果有人可以帮助解释为什么会发生以下情况,以及如何解决它;那太棒了!
我的问题的长期和短缺是我编写了一些代码(在主脚本中完全有效!),但我需要将此代码放在多个脚本中。因此,我尝试将此代码转换为“包含”文件。
执行包含文件时,只有'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”,并且只有一个表单提交按钮 - 当我应该有两个时。
答案 0 :(得分:1)
这可能是因为dirname(__FILE__)
正在返回当前文件的目录,该目录现在位于./includes
,因此无法找到该文件。
您可以使用dirname(dirname(__FILE__))
获取父目录。