2016-02-02 3 views
0

Я не знаю, когда использовать каждый из них.mysqli_real_escape_string vs filter_input()? Какой метод следует использовать?

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

или

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

Возможный дубликат [filter \ _input и mysqli \ _real \ _escape \ _string для целых чисел] (http://stackoverflow.com/questions/9653099/filter-input-and-mysqli-real-escape-string-for- целые числа) – arcs

ответ

1

real_escape_string() должен быть использован для строк SQL, то есть части запроса, заключенный в кавычках. Необходимо использовать безоговорочно, несмотря на все предыдущие манипуляции. real_escape_string() Исключает специальные символы в строке для использования в выражении SQL, принимая во внимание текущий набор символов соединения.

Где, как

filter_input Получает определенную внешнюю переменную по имени и фильтрует его. filter_input предоставит вам способ проверки ввода для конкретной строки и символов.

  1. Validate фильтры
  2. Sanitize фильтры
  3. Другие фильтры
  4. Фильтр флаги

Validate фильтры

Как было предложено название оно используется для проверки для конкретного ввода как FILTER_VALIDATE_EMAIL ,

$email = "[email protected]"; // 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)); 
} 

Sanitize фильтры он будет использовать для проверки и удаления символов из строки.

FILTER_SANITIZE_EMAIL "email"   Remove all characters except letters, digits and !#$%&'*+-=?^_`{|}[email protected][]. 

Для получения дополнительной информации о filter_value.

Поэтому я думаю, что у обоих есть разные роли.

Смежные вопросы