我目前正在开发一个新项目,我希望从文本文件中获取“描述”并显示它。这是我的代码到目前为止,但我在第11行做了一些错误(使用include),我确信这是一个非常 noobie问题,但是如果有人能解决这个问题就会很棒。< / p>
这是我的代码:
<?php
$dir = 'resources/';
foreach(glob($dir.'*', GLOB_ONLYDIR) as $resdir) {
$resdir = str_replace($dir, '', $resdir);
echo "
<div class=\"span3\">
<div class=\"tile\">
<img src=\"resources/" . $resdir . "/thumbnail.png\" class=\"img-rounded\">
<h3 class=\"tile-title\">" . $resdir . "</h3>
<p>" include('resources/'.$_GET['resdir'].'description.txt'); "</p>
<a class=\"btn btn-primary btn-large btn-block\" href=\"http://www.baboonhut.com/resources/" . $resdir . "/\">More Information</a>
</div>
</div>
"
;
}
答案 0 :(得分:1)
用这一行替换两行。
<h3 class=\"tile-title\">" . $resdir . "</h3>
<p>"; echo include('resources/'.$_GET['Mydir'].'description.txt'); echo "</p>
答案 1 :(得分:0)
看起来您正在尝试连接,而您无法使用include进行连接。基本上你会这样做3个不同的陈述:
<?php
$dir = 'resources/';
foreach(glob($dir.'*', GLOB_ONLYDIR) as $resdir) {
$resdir = str_replace($dir, '', $resdir);
echo "<div class=\"span3\">
<div class=\"tile\">
<img src=\"resources/" . $resdir . "/thumbnail.png\" class=\"img-rounded\">
<h3 class=\"tile-title\">" . $resdir . "</h3>
<p>";
include('resources/'.$_GET['Mydir'].'description.txt');
echo "</p>
<a class=\"btn btn-primary btn-large btn-block\" href=\"http://www.baboonhut.com/resources/" . $resdir . "/\">More Information</a>
</div>
</div>";
}
答案 2 :(得分:0)
另一种选择是读取文件
$file = fopen('resources/'.$_GET['Mydir'].'description.txt', "r") or exit("Unable to open file!");
while(!feof($file))
{
echo fgets($file). "<br>";
}
fclose($file);
答案 3 :(得分:0)
您可以使用两个单独的echo
语句或?> ... <?php
语法:
?>
<div class="span3">
<div class="tile">
<img src="resources/<?php echo $resdir; ?>/thumbnail.png" class="img-rounded">
<h3 class="tile-title"><?php echo $resdir; ?></h3>
<p><?php include('resources/'.$_GET['Mydir'].'description.txt'); ?></p>
[...]
<?php
我会注意到,上面的代码可以允许任何人{@ 3}}访问网络服务器,方法是将..
包含在$_GET['Mydir']
的值中(并将空字节转义为%00
,用于读取未以.txt
结尾的文件。
此外,如果文本文件包含用户输入,则可能允许攻击者在服务器上执行任意PHP代码(例如以使用它来发送垃圾邮件)。更好的是做这样的事情:
<?php
$mydir = $_GET['Mydir'];
if (preg_match('/[^A-Za-z0-9]/', $mydir)) {
die('Invalid directory name; must consist of only letters and digits');
}
$contents = file_get_contents("resources/$mydir/description.txt");
if ($contents === false) {
die('Failed to read file');
}
echo htmlspecialchars($contents);
?>