Стандартный способ получения входных данных формы PHP

Я занимаюсь веб-программированием на PHP около 2 месяцев, а для форм я получаю пользовательский ввод таким образом:

Для стандарта <input type="text">:

/*input sanitation*/
function testInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = mysql_real_escape_string($data);
return $data;
}

/*just gets the data*/
function getRText($HTMLname) {

if (isset ( $_POST [$HTMLname] ) && ! empty ( $_POST [$HTMLname] )) {
return testInput(( $_POST [$HTMLname] ));
} else {
throw new Exception("Input is missing from " + $HTMLname);
}
}

И затем, на другом сценарии, я бы сделал что-то вроде этого:

$userID = getRText('uid');
$company = getRText('company');
$projectNum = getRText('projnum');

$dataArray = array($userID, $company, $projectNum);

Проблема с этим подходом в том, что он очень трудоемкий, когда у меня большая форма. Я думаю, что в Perl (используя Perl CGI) я бы мог динамически циклически проходить по полям ввода пользователя и динамически добавлять каждый ввод в массив, но я не уверен, возможно ли что-то подобное в PHP. Прямо сейчас мне приходится вручную извлекать все данные из каждого входа. Все примеры форм PHP онлайн делают это также. Это правильный способ извлечения данных из форм PHP?

0

Решение

Все данные из формы доставляются в ваш скрипт либо в $ _POST, либо в $ _GET массив.

Так что вы могли бы просто сделать

foreach ($_POST as $key => $val)
{
$_POST[$key] = testInput($val);
}

Это запустит вашу дезинфекцию и поместит данные обратно в массив $ _POST, что устранит необходимость в еще одном массиве.

Я никогда не понимал, почему люди перемещают данные из массива $ _POST / $ _ GET в скалярные переменные или другие массивы. Это очень хороший набор и однажды доставленный вам, вы можете делать все, что вам нравится.

2

Другие решения

Вы все еще можете динамически проходить через ввод в PHP. Это будет делать то, что вы хотели:

$input_array = array();
foreach ($_POST as $key => $val)
{
$input_array[] = getRText($val);
}
1

По вопросам рекламы [email protected]