【问题标题】:mysqli_real_escape_string vs filter_input()? What method should I use?mysqli_real_escape_string vs filter_input()?我应该使用什么方法?
【发布时间】:2016-02-02 16:11:10
【问题描述】:

我不知道什么时候使用它们。

$name = mysqli_real_escape_string($connection, $_POST['name']); 

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);

【问题讨论】:

标签: php mysql database


【解决方案1】:

real_escape_string() 必须用于 sql 字符串,即用引号括起来的查询部分。必须无条件使用,尽管之前有任何操作。 real_escape_string() 转义字符串中的特殊字符以用于 SQL 语句,同时考虑连接的当前字符集。

在哪里

filter_input 按名称获取特定的外部变量并可选择过滤它。 filter_input 将为您提供验证特定字符串和字符的输入的方法。

  1. 验证过滤器
  2. 过滤过滤器
  3. 其他过滤器
  4. 过滤标志

验证过滤器

顾名思义,它用于验证特定输入,例如 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的更多信息。

所以我认为两者都扮演着不同的角色。

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 2012-12-10
    • 2018-10-16
    • 1970-01-01
    • 2016-07-08
    • 2021-12-19
    • 2019-11-04
    • 2022-06-18
    相关资源
    最近更新 更多