【问题标题】:Checking querystring values in PHP在 PHP 中检查查询字符串值
【发布时间】:2009-11-16 22:53:56
【问题描述】:
http://localhost/?area=characters&name=Michal+Stroganof



$result = mysql_query("SELECT * from players WHERE name = '$_GET[name]'");

while ($row = mysql_fetch_assoc($result)) {

    echo "Name: " .$row['name']. "<br>";
    echo "Level: " .$row['level']. "<br>";

}

这是我的characters.php的所有代码

如果获取变量“名称”未包含在 URL 中,我想显示一个搜索表玩家的搜索表单。我该怎么做?

【问题讨论】:

  • 继续了解 SQL 注入:unixwiz.net/techtips/sql-injection.html
  • 您的示例可能只是为了简单起见,但如果是实时代码,请研究 SQL 注入和准备语句。
  • 使用输入函数来过滤输入并避免 sql 注入类型问题,以及在输入 sql 时转义输入,正如 jheddings 上面提到的!永远不要相信用户数据。
  • Err,正如 jheddings 下面提到的那样。

标签: php mysql query-string


【解决方案1】:

你的意思是像这样改变你的 SQL 字符串吗?

$sql = 'SELECT * from players';
if (isset($_GET['name'])) {
    $safename = mysql_real_escape_string($_GET['name']);
    $sql .= " WHERE name='$safename'";
}
$result = mysql_query($sql);

一定要清理你的 SQL!

【讨论】:

    【解决方案2】:

    使用isset():

    if (isset($_GET['name'])) {
        // your above code
    } else {
        // display form        
    }
    

    【讨论】:

      【解决方案3】:

      又快又脏:

      <?php
      if (!isset($_GET['name']))
      {
          echo  '<form action="'. $_SERVER['PHP_SELF'] .'" method="GET">'
               .'<input type="text" name="name" />'
               .'</form>';
      }
      else
      {
          // your current code that queries your database here
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 2021-01-15
        • 1970-01-01
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 1970-01-01
        • 2013-03-29
        • 1970-01-01
        相关资源
        最近更新 更多