escape-строка mysql весь массив сообщений?
Мне было интересно, можно ли просто my_sql_escape построить весь массив $_POST и $_GET, чтобы вы не пропустили ни одной переменной?
Не знаю, как это проверить, иначе я бы сам это сделал. Спасибо!
4 answers
Я бы использовал функцию array_walk()
. Это лучше подходит, потому что изменяет ПОСТ суперглобальный, чтобы любое будущее использование было очищено.
array_walk_recursive( $_POST, 'mysql_real_escape_string' );
Однако убедитесь, что вы не полагаетесь на эту строку для полной защиты своей базы данных от атак. Лучшая защита - это ограничение наборов символов для определенных полей. Например, в сообщениях электронной почты нет кавычек (поэтому разрешены только буквы, цифры, @, тире и т. Д.), А в именах нет скобок (поэтому разрешены только буквы и выбранные специальные символы)
РЕДАКТИРОВАТЬ: Изменен array_walk()
на array_walk_recursive()
благодаря предложению @Johan. Реквизит для него.
$escaped_POST = array_map('mysql_real_escape_string', $_POST);
Хотя я бы рекомендовал вместо этого использовать MYSQLI.
Вы можете использовать
foreach(array_keys($_POST) as $key)
{
$clean[$key] = mysql_real_escape_string($_POST[$key]);
}
И после этого для доступа к почтовым данным используйте echo $clean['name'];
Попробуйте Это
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_ Целиком