我的id = x只显示所有内容?

我终于学会了如何做到这一点 但问题是,当我点击lol.php?id = 2时,它仍会显示所有内容 来源:

<?php

   mysql_connect("localhost", "root", "");
   mysql_select_db("blog");

   $result = mysql_query("SELECT post_id, title, body FROM posts ORDER BY post_id DESC");

   while ($row = mysql_fetch_array($result)){
      $jokeid = $row["post_id"];
      $title = $row["title"];
      $body = $row["body"];
      echo("$title". "
". $body . "
"); } mysql_close(); ?>

和任何安全建议,我应该在哪里应用mysql_reall_escape_string?

1
额外 编辑
意见: 4
lol.php 的来源是什么?
额外 作者 Mark Byers,
@Smamatti:没有。这不是必需的
额外 作者 genesis,

2 答案

您没有任何用户输入的处理程序,请尝试下面的操作,这将检查是否先设置 id = NUM​​BER

<?php

mysql_connect("localhost", "root", "");
mysql_select_db("blog");
if ($_GET['id']) {
   $result = mysql_query("SELECT  title, body FROM posts WHERE post_id = ".intval($_GET['id']));
   $post = mysql_fetch_assoc($result);
  //use $post to show whatever you want here
}
else{
   $result = mysql_query("SELECT post_id, title, body FROM posts ORDER BY post_id DESC");

   while ($row = mysql_fetch_array($result)){
     $jokeid = $row["post_id"];
     $title = $row["title"];
     $body = $row["body"];
     echo("".$title."". "
". $body . "
"); } } mysql_close();
1
额外
@keli:我的错。编辑
额外 作者 genesis,
我thikn现在它已修复或显示错误,因为它给出:警告:mysql_fetch_assoc()期望参数1是资源,布尔值在第7行的C:\ xampp \ htdocs \ lol.php中给出
额外 作者 Mikel,

You need to escape the database variables for output using htmlspecialchars()

$title = htmlspecialchars($row["title"]);
$body = htmlspecialchars($row["body"]);
echo("$title". "
". $body . "
");

如果数据库由用户输入填充,这可以防止跨站点脚本编写的可能性。

0
额外
如果他想在他的文章中使用html,则不需要这样做
额外 作者 genesis,
好的,谢谢你,但id = 1 id = 2 id = 3的情况与lol.php相同
额外 作者 Mikel,
好吧,现在当我去id = 1时它什么也没显示
额外 作者 Mikel,