0

わかりましたので、基本的に、フォームを使用して PHP に変数を送信するリンクのリストを生成しました。これにより、各リンクから次のページにさまざまなものをロードできるようになります。ただし、各リンクは毎回データベースから同じデータのみを要求しているようです。私が使用している PHP のバージョンはバージョン 5.3.14 です。

最初のページの php コードは次のとおりです。

    <?php
        //DATABASE CONNECTION

        $News=mysql_query("SELECT * FROM Tutorial");
        while($row=mysql_fetch_array($News))
          {
            printf("<div class='NewsItem'><div class='title'>%s</div><form enctype='multipart/form-data' action='tutorial.php' method='post'><input type='hidden' name='tutorial' value='%s'/><input type='submit' name='submit' value='%s' id='hyperlink-style-button'/></div>", $row['Title'], $row['Title'], $row['Title']);
          }
        ?>

そして、これがフォームで各リンクから異なるものを表示できるようにする2番目のページのphpコードです

<?php
    //DATABASE CONNECTION

    $Tutorial=$_POST['tutorial'];
    $query="SELECT * FROM Tutorial WHERE Title='$Tutorial'";
    $News=mysql_query($query);
    while($row=mysql_fetch_array($News))
      {
        printf("<div class='NewsItem'><div class='title'>%s</div>%s</div>", $row['Title'], $row['Tutorial']);
      }
     unset($_POST['tutorial']);
     unset($Tutorial);
    ?>

どのリンクがクリックされても、常に同じデータを使用しないようにする方法についてのアイデアはありますか? また、コードの動作を確認する必要がある場合は、最初のページへのリンクを参照してください:ウェブサイトの例

4

1 に答える 1

0

あなたが逃した</form>。これを試して。

printf("<div class='NewsItem'><div class='title'>%s</div><form enctype='multipart/form-data' action='tutorial.php' method='post'><input type='hidden' name='tutorial' value='%s'/><input type='submit' name='submit' value='%s' id='hyperlink-style-button'/></form></div>", $row['Title'], $row['Title'], $row['Title'])

他に重大な問題は見られません。次のことを試してください。また、ページ内に同じ ID を持つenctype='multipart/form-data'複数のアイテムを含めることは無効であるため、 に変更id="hyperlink-style-button"しましたclass="hyperlink-style-button"。それに応じてcssを変更する必要があります。また、一重引用符を二重引用符に置き換えhtmlspecialchars、値が引用符で HTML を壊さないように追加しました。

printf('<div class="NewsItem">
        <div class="title">%s</div>
        <form action="tutorial.php" method="post">
            <input type="hidden" name="tutorial" value="%s"/>
            <input type="submit" name="submit" value="%s" class="hyperlink-style-button"/>
        </form>
        </div>',htmlspecialchars($row['Title']),htmlspecialchars($row['Title']),htmlspecialchars($row['Title']));

交換も

$Tutorial=$_POST['tutorial'];

$Tutorial=mysql_real_escape_string($_POST['tutorial']);

注: あなたのコードは SQL インジェクション攻撃を受けやすいです。作成済みステートメントを使用してください。

警告: mysql 拡張モジュールは PHP 5.5.0 で非推奨になり、将来的に削除される予定です。代わりに、MySQLiまたはPDO_MySQLmysql_*拡張機能を使用する必要があります。新しいコードの開発には使用しないでください。

于 2013-08-31T13:12:14.450 に答える