escape-строка mysql весь массив сообщений?


Мне было интересно, можно ли просто my_sql_escape построить весь массив $_POST и $_GET, чтобы вы не пропустили ни одной переменной?

Не знаю, как это проверить, иначе я бы сам это сделал. Спасибо!

Author: OMG Ponies, 2011-01-12

4 answers

Я бы использовал функцию array_walk(). Это лучше подходит, потому что изменяет ПОСТ суперглобальный, чтобы любое будущее использование было очищено.

array_walk_recursive( $_POST, 'mysql_real_escape_string' );

Однако убедитесь, что вы не полагаетесь на эту строку для полной защиты своей базы данных от атак. Лучшая защита - это ограничение наборов символов для определенных полей. Например, в сообщениях электронной почты нет кавычек (поэтому разрешены только буквы, цифры, @, тире и т. Д.), А в именах нет скобок (поэтому разрешены только буквы и выбранные специальные символы)

РЕДАКТИРОВАТЬ: Изменен array_walk() на array_walk_recursive() благодаря предложению @Johan. Реквизит для него.

 11
Author: Bailey Parker, 2011-10-02 08:02:29
$escaped_POST = array_map('mysql_real_escape_string', $_POST);

Хотя я бы рекомендовал вместо этого использовать MYSQLI.

 5
Author: Kevin, 2011-01-12 04:34:41

Вы можете использовать

foreach(array_keys($_POST) as $key)
{

  $clean[$key] = mysql_real_escape_string($_POST[$key]);

}

И после этого для доступа к почтовым данным используйте echo $clean['name'];

 2
Author: Bhanu Prakash Pandey, 2011-01-12 04:37:51

Попробуйте Это

foreach(array_keys($_GET) as $key){ $_GET[$key] = mysql_real_escape_string($_GET[$key]);}
foreach(array_keys($_POST) as $key){ $_POST[$key] = mysql_real_escape_string($_POST[$key]);}

В строку mysql_real_escape_ Целиком

 1
Author: Danyial Shahid Ali, 2015-07-03 08:14:56