我想知道在这种情况下我是否还应该使用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;
}
}
答案 0 :(得分:0)
在这种情况下,不需要mysqli_real_escape_string。此功能的目的是“清理”用户输入的数据。
在您当前编写的代码中,是的,您正在使用用户输入的数据,因为$ _GET ['data']可能包含输入到表单中的内容(或类似内容);但是,既然你正在使用switch语句检查$ _GET ['data'] 之前你将它连接到一个查询,那你就没事了。
但是,如果你决定实现一个“$ case”,它将$ data连接到一个查询而不先将它与你认为安全的值进行比较,那么,是的,你应该清理你的数据。
以下是关于清理用户输入的进一步阅读:The ultimate clean/secure function