Я занимаюсь веб-программированием на 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?
Все данные из формы доставляются в ваш скрипт либо в $ _POST, либо в $ _GET массив.
Так что вы могли бы просто сделать
foreach ($_POST as $key => $val)
{
$_POST[$key] = testInput($val);
}
Это запустит вашу дезинфекцию и поместит данные обратно в массив $ _POST, что устранит необходимость в еще одном массиве.
Я никогда не понимал, почему люди перемещают данные из массива $ _POST / $ _ GET в скалярные переменные или другие массивы. Это очень хороший набор и однажды доставленный вам, вы можете делать все, что вам нравится.
Вы все еще можете динамически проходить через ввод в PHP. Это будет делать то, что вы хотели:
$input_array = array();
foreach ($_POST as $key => $val)
{
$input_array[] = getRText($val);
}