Мне было интересно, можно ли просто my_sql_escape построить весь массив $ _POST и $ _GET, чтобы вы не пропустили какие-либо переменные?
Не уверен, как проверить это, или я бы сам. Благодаря!
Я бы использовал array_walk()
. Это лучше подходит, потому что модифицирует суперкластер POST, поэтому любые будущие применения дезинфицируются.
array_walk_recursive( $_POST, 'mysql_real_escape_string' );
Однако убедитесь, что вы не полагаетесь на эту строку, чтобы полностью защитить свою базу данных от атак. Лучшая защита – это ограничение набора символов для определенных полей. Ex. У электронной почты нет кавычек в них (поэтому допускаются только буквы, цифры, @, тире и т. Д.), А имена не имеют в них круглых скобок (поэтому допускаются только буквы и отдельные специальные символы)
EDIT: Изменено 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]); }
и после этого для доступа к данным post используйте 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_string Всего