POST санитарная обработка и избегание вложенных блоков if

При очистке $ _POST, передаваемой из контроллера в модель, мне нужно очистить входные данные, и есть 2 варианта, которые я могу придумать.

Для первого я могу вложить if блоки вроде этого:

if(!empty($username))
{
if(!empty($password))
{
//login the user
}
else
{
echo 'Please enter password.'
}
}
else
{
echo 'Please enter username.'
}

А другой такой:

   if(empty($username))
{
$err[] = 'Please enter username';
}
if(empty($password))
{
$err[] = 'Please enter password.';
}
if(empty($err)){
//login the user
}
else
{
//display error
}

Какой способ является предпочтительным, и есть ли другой, более разумный способ дезинфекции входных данных?

0

Решение

Просто можете использовать:

$errors = [];
if(!isset($_POST['username']) || empty($_POST['username'])) {
$errors[] = 'Please enter valid username';
} else if(!isset($_POST['password']) || empty($_POST['password'])) {
$errors[] = 'Please enter valid password';
}

filter_var может быть использован для фильтрации для конкретного ввода.

1

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

Это не дезинфекция, вы просто проверяете, есть ли в вашем входе какой-либо символ. Санитарная обработка — это получение точного типа значения для вашей формы.

Если ваша проблема о том, если блоки включены и вы можете создать массив ожидаемых входных имен

$desiredInputs = array('username','password','etc');
$errors = [];
foreach ($desiredInputs as $input) {
if(!isset($_POST[$input]) || empty(trim($_POST[$input])){
$errors[] = $input.' is not set or empty';
}
}

Для дезинфекции вы можете проверить ответ ниже;
https://stackoverflow.com/a/34760018/502649

Кроме того, лучшая практика для дезинфекции RegEx а также filter_var

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector