mysql_escape_string весь массив записей? - PullRequest
10 голосов
/ 12 января 2011

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

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

Ответы [ 4 ]

11 голосов
/ 12 января 2011

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

array_walk_recursive( $_POST, 'mysql_real_escape_string' );

Однако убедитесь, что вы не полагаетесь на эту строку, чтобы полностью защитить свою базу данных от атак.Лучшая защита - ограничение наборов символов для определенных полей.Ex.В письмах электронной почты нет кавычек (поэтому разрешены только буквы, цифры, @, тире и т. Д.), А в именах нет круглых скобок (поэтому разрешены только буквы и выбранные специальные символы)* EDIT: Изменено array_walk() на array_walk_recursive() благодаря предложению @ Johan.Реквизит к нему.

5 голосов
/ 12 января 2011
$escaped_POST = array_map('mysql_real_escape_string', $_POST);

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

2 голосов
/ 12 января 2011

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

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

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

}

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

1 голос
/ 03 июля 2015

Попробуйте

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_string Всего

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...