Задать вопрос

Хорошая ли реализация проверки ввода полей?

Я только учусь и для проверки ввода данных в полях логин, пароль и почта написал вот такой код
if (empty($login)) { $msg_err = "1"; } else { $msg_err = ""; }
if (empty($password)) { $msg_err = $msg_err."2"; } else { $msg_err = $msg_err.""; }	
if (empty($email)) { $msg_err = $msg_err."3"; } else { $msg_err = $msg_err.""; }		
header( 'Refresh: 0; url=/reg.php?msg='.$msg_err);

Всё прекрасно работает, и по коду передаваемого $msg_err вывожу ошибку о том, какие строки были не введены.
У пользователей тостера хотел спросить, как вам этот код в плане выполнения поставленной задачи? Т.к. меня терзают сомнения, что можно сделать и лучше. Жду критики и советов.
  • Вопрос задан
  • 2692 просмотра
Подписаться 8 Оценить 1 комментарий
Ответ пользователя Александр Кубинцев К ответам на вопрос (4)
akubintsev
@akubintsev
Опытный backend разработчик
Я рекомендую пользоваться "формами", как например здесь https://github.com/kryoz/sociochat/blob/master/src... , хотя реализация достаточно примитивная
try {
   $form = (new Form())
      ->import($request)
      ->addRule(PropertiesDAO::NAME, Rules::namePattern(), $lang->getPhrase('InvalidNameFormat'))
      ->addRule(PropertiesDAO::TIM, Rules::timPattern(), $lang->getPhrase('InvalidTIMFormat'))
      ->addRule(PropertiesDAO::SEX, Rules::sexPattern(), $lang->getPhrase('InvalidSexFormat'));
} catch (WrongRuleNameException $e) {
   $this->errorResponse($user, ['property' => $lang->getPhrase('InvalidProperty')]);
   return;
}


Такая форма валидации гораздо легче читается и управляется.
Сами правила ничто иное, как анонимные функции, но можно и типовые случае в фабрику запихнуть
https://github.com/kryoz/sociochat/blob/master/src...
Ответ написан
Комментировать