При очистке $ _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
}
Какой способ является предпочтительным, и есть ли другой, более разумный способ дезинфекции входных данных?
Просто можете использовать:
$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 может быть использован для фильтрации для конкретного ввода.
Это не дезинфекция, вы просто проверяете, есть ли в вашем входе какой-либо символ. Санитарная обработка — это получение точного типа значения для вашей формы.
Если ваша проблема о том, если блоки включены и вы можете создать массив ожидаемых входных имен
$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