1

現在、新しいプロジェクトに取り組んでおり、テキスト ファイルから「説明」を取得して表示しようとしています。これはこれまでの私のコードですが、11行目(インクルード)で何か間違ったことをしました。かなり初心者の問題だと確信していますが、誰かがそれを修正できれば素晴らしいでしょう。

これが私のコードです:

<?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>
" 
;
}

(ペーストビンにコピー)

4

4 に答える 4

0

2 つの別個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

上記のコードでは、 の値に含めることにより、Web サーバーがアクセスできる任意のファイルを誰でも読み取ることができることに注意してください。..$_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);

?>
于 2013-05-29T18:56:27.603 に答える