【发布时间】:2016-02-02 16:11:10
【问题描述】:
我不知道什么时候使用它们。
$name = mysqli_real_escape_string($connection, $_POST['name']);
或
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
【问题讨论】:
我不知道什么时候使用它们。
$name = mysqli_real_escape_string($connection, $_POST['name']);
或
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
【问题讨论】:
real_escape_string() 必须用于 sql 字符串,即用引号括起来的查询部分。必须无条件使用,尽管之前有任何操作。 real_escape_string() 转义字符串中的特殊字符以用于 SQL 语句,同时考虑连接的当前字符集。
在哪里
filter_input 按名称获取特定的外部变量并可选择过滤它。 filter_input 将为您提供验证特定字符串和字符的输入的方法。
验证过滤器
顾名思义,它用于验证特定输入,例如 FILTER_VALIDATE_EMAIL。
$email = "abc@example"; // wrong email
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
echo $email.'<br>';
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
}else{
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
}
清理过滤器 它将用于验证和删除字符串中的字符。
FILTER_SANITIZE_EMAIL "email" Remove all characters except letters, digits and !#$%&'*+-=?^_`{|}~@.[].
有关filter_value的更多信息。
所以我认为两者都扮演着不同的角色。
【讨论】: