Добрый день.
Имеется регистрация по адресу example.com/reg
Полученные данные обрабатывает example.com/reg/done
Если не заполнить поля отведенные для регистрации на странице /reg, и перейти далее на страницу /reg/done (кликнув по кнопке регистрации) то выйдет уведомление (первая проверка) о том что форма заполнена некорректно.
Но, если перейти напрямую на страницу /reg/done то первая проверка пройдет успешно и выйдет ошибка о неверном e-mail.
Вопрос, почему проходит первая проверка при переходе напрямую на страницу example.com/reg/done?
Ведь никакие данные заполнены небыли.
// Код первой проверки
class Filled
{
static function filled_out($form_vars)
{
foreach ($form_vars as $key => $value) {
if (empty($value)||!preg_match("/^[-a-zA-Z0-9_\.@]*$/", $value)) {
return false;
}
}
return true;
}
}
// код регистрации
$email = Clear::clear_data($_POST['email']);
$name = Clear::clear_data($_POST['name']);
$pass = Clear::clear_data($_POST['pass']);
$pass2 = Clear::clear_data($_POST['pass2']);
try {
// проверка, заполнены ли поля формы
if (!Filled::filled_out($_POST)) {
throw new Exception("Вы не заполнили корректно форму.", 1);
}
// проверка корректного email
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new Exception("Недопустимый адрес электронной почты.", 1);
}
/* дальнейшие проверки */