PHP | MySQLi:使用..real_escape ..具有确切的参数?

时间:2015-12-31 04:39:32

标签: php mysqli

我想知道在这种情况下我是否还应该使用mysqli_real_escape_string

我有一组接受的url参数列表,否则会被忽略。

if(isset($_GET["data"])) {  
  $data = $_GET["data"]; 
  switch($data) { 
    case "one" :
      //do x
      $sql = "SELECT * FROM table WHERE page='".$data."'";
    break;
    case "two" :
      //do x
    break;
    case "three" :
      //do x
    break;
  }
}

1 个答案:

答案 0 :(得分:0)

在这种情况下,不需要mysqli_real_escape_string。此功能的目的是“清理”用户输入的数据。

在您当前编写的代码中,是的,您正在使用用户输入的数据,因为$ _GET ['data']可能包含输入到表单中的内容(或类似内容);但是,既然你正在使用switch语句检查$ _GET ['data'] 之前你将它连接到一个查询,那你就没事了。

但是,如果你决定实现一个“$ case”,它将$ data连接到一个查询而不先将它与你认为安全的值进行比较,那么,是的,你应该清理你的数据。

以下是关于清理用户输入的进一步阅读:The ultimate clean/secure function