Joh*_*ohn -1 html php mysql mysqli
我想知道哪个更强filter_var或mysqli_real_escape_string.
更具体。
选项1:
//Course Title
$ctitle = trim($_POST['courseTitle']);
$clean_ctitle = filter_var($ctitle, FILTER_SANITIZE_STRING);
Run Code Online (Sandbox Code Playgroud)
选项2:
//Course Title
$ctitle = trim($_POST['courseTitle']);
$clean_ctitle = mysqli_real_escape_string($con, $ctitle);
Run Code Online (Sandbox Code Playgroud)
我也知道准备好的语句,但我想预先过滤进来的数据。如果有其他选择,请告诉我。
它们没有达到相同的目标,您将filter_var($ctitle, FILTER_SANITIZE_STRING)用来删除不需要的特殊字符,而mysqli_real_escape_string传输编码则用于应用所需的转换,以便您将存储的内容与您提供的内容完全相同,避免 SQL 错误或注入。
通常,您将首先使用filter_var()(或您使用的框架中的任何内置功能)从外部输入(表单数据、URL 参数...)强制执行格式和允许的字符规则。然后,在保存您验证的数据时,您将使用mysqli_real_escape_string()将数据注入到您的 MySQL 字符串中。
总结一下,
filter_var() 是关于过滤和验证输入数据。mysqli_real_escape_string() 是关于在 MySQL 字符串中使用数据之前转义数据。您不应该在它们之间进行选择,您应该同时使用两者;-)