StripTags и MysqlRealEscape массив с PHP - PullRequest
0 голосов
/ 29 января 2011

Я хочу удалить код HTML из нескольких полей. Поэтому я использовал:

extract($_POST)

Затем вставка в таблицу.

Я не буду снимать каждое поле, как:


$user  = strip_tags($user);
$email = strip_tags($email);
.....

Есть ли решение убрать мой массив extract ($ _ POST)?

То же самое для mysql_real_escape_string ()

РЕДАКТИРОВАТЬ 1 Я не буду использовать

foreach($_POST as $key => $value){
  $_POST[$key] = mysql_real_escape_string(strip_tags($value));
}

Я хочу использовать короткую переменную:

$name, $email

не:
$_POST['name'] , $_POST['email']

И без извлечения (), как не рекомендуется.

Редактировать 2 Решение:

foreach($_POST as $key => $value){
  $$key = mysql_real_escape_string(strip_tags($value));
}

Ответы [ 3 ]

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

Я думаю, вы хотите этот кусок кода

foreach($_POST as $key => $value){
   $$key = strip_tags($value);
}

//The insertion here
insertion();   

Старый

foreach($_POST as $key => $value){
   $_POST[$key] = strip_tags($value);
   }

extract($_POST);

//The insertion here
insertion();

После этого у вас есть все поля сообщения strip_tagged

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

Вы можете использовать array_map(), чтобы указать функцию обратного вызова для каждого элемента данного массива.

$_POST = array_map("strip_tags", $_POST);

Редактировать: Может быть, вы должны указать, почему вы пытаетесь избежать пользовательского ввода. Например, PHP имеет специальные средства для экранирования значений, которые будут добавлены в базу данных, а также для значений, которые будут отображаться на странице. Первый может привести к внедрению SQL, а второй - к уязвимости XSS.

1 голос
/ 29 января 2011

Используйте функции фильтрации , которые предоставляет PHP, особенно в этом случае вас заинтересует filter_input_array:

$filtered = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED);
...