Как сделать проверку полей после отправки формы а не сразу?

Изучаю PhP, решил сделать самую простую, ненавороченную форму регистрации. Условия поставил себе такие, если в имени больше 10 символов, то имя не корректно. Если в email нет 2 точек и одного @, то email не корректен.

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


Ответы (3 шт):

Автор решения: DrMcSheen

Сначала делай проверку

if (isset($_POST['submit'] { // пришли данные из формы

а потом проверяй их.

Зачем в мыле две точки должны быть? Одной достаточно.

UPD: форму отправляй методом POST

<form action="" method="post">
→ Ссылка
Автор решения: Даниил

UPD 2.0

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

Ответ: Для этого делайте проверку isset() как написал ранее.

По вашему примеру получится вот так:

  <?php 
    
   if (isset($_GET['submit'])) {

    if (isset($_GET['name']) && !empty($_GET['name'])) {
        $name = $_GET['name']; 
        $strName = mb_strlen($name); 
    
        if( $strName > 10 ) { 
            echo "Вы ввели слишком, ошибка!"; 
        }elseif( $strName <= 10 ) { 
            echo "Ваше имя, все ок!"; 
        }   
    }   
    // Тут остальной код
   }
    
  ?>

Для проверки формы (Данных с инпутов) делается вот так:

<form>
  <input name="email">
  <input name="submit" value="Отправить"> 
</form>

<?php 

if(isset($_GET['submit'])){
 echo "Введенный Email: ".$_GET['email'];
 echo "На кнопку отправить нажали!";
}

?>

→ Ссылка
Автор решения: Ипатьев

Наверное, надо, проверить - была ли отправлена форма?

Вообще, формы, которые отправляют какую-либо информацию на сайт, а не запрашивают её с сайта, отправляются методом POST, а не GET.
Поэтому в общем случае проще всего проверить либо if ($_SERVER['REQUEST_METHOD'] === POST), либо просто if($_POST).

В случае же, когда форма отправлена методом GET, или на странице есть несколько форм, и надо понять, какая именно была отправлена, то имеет смысл проверить наличие одного из полей, например if (isset($_POST['firstname'])).

Кроме того надо помнить несколько важных вещей про отправку форм

  • если форма была отправлена методом POST, то после успешной обработки всегда обязательно должен быть сделан редирект, с помощью функции header(). Можно на ту же самую страницу, или любую другую, но редирект обязателен
  • по этой причине обработка формы должна идти в файле ДО вывода формы, а не после
→ Ссылка