Результаты отправки формы на пустой странице в PHP - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь создать систему входа в систему и хочу создать условный оператор, который проверяет, установлена ​​ли глобальная переменная $ _POST ['submit-form'].

Если глобальная переменная $ _POST ['submit-form'], тогда я хочу отобразить поля отправленных форм.Это работает нормально ..

Проблема возникает, когда я хочу проверить, пуста ли глобальная переменная $ _POST ['submit-form'], я получаю пустую страницу, когда я отправляю форму без чего-либо.Он должен отражать что-то вроде «Вы ничего не ввели, пожалуйста, попробуйте еще раз».

Я не знаю, что не так.

Это код для формы.

  <form action="test-form2.php" method="POST">


      Name: <input type="text" name="name"><br>
      E-mail: <input type="text" name="email"><br>


    <input type="submit" name="submit-form" value="submit">


  </form>

.. и это код для обработчика формы.

<?php


    if(isset($_POST['submit-form'])) {


        $name = $_POST['name'];
        $email = $_POST['email'];


      if(($_POST['name'] != "") && ($_POST['email']!= "")) {    

          echo "This is your name: ".$name."<br>";
           echo "This is your email: ".$email;

      // header('refresh=3;url = ../leden/index.php');

       }

    } else {

          echo "You have entered nothing or your username and/or password is incorrect, please try again.";

      // header('refresh=3;url = /test-form1.php');

 }

?>

Ответы [ 3 ]

3 голосов
/ 15 апреля 2019

Ваш $_POST всегда имеет submit-form (и он всегда не пустой), поэтому оператор if всегда возвращает true. Попробуйте проверить (например) только то, что $_POST['name'] и $_POST['email'] не пусты.

2 голосов
/ 15 апреля 2019

Проблема с вашим кодом состоит в том, что проверки, если он установлен, недостаточно. Потому что он может быть установлен и пусто - Реально, что вы хотите, это проверить оба isset и empty IE:

if (isset($_POST['submit-form'] && $_POST['submit-form'] != '' && $_POST['submit-form'] != null)  

Если вышеприведенный if оператор терпит неудачу ваше значение для $_POST['submit-form'], скорее всего, нетв процессе отправки.

ОБНОВЛЕНИЕ Проверка пустых полей

if ($_POST['name'] != '' && $_POST['email'] != ''){
   // Do stuff
}else{
    if ($_POST['name'] == ''){
       echo "name is empty";
    }
    if ($_POST['email'] == ''){
       echo "email is empty";
    }
}
1 голос
/ 15 апреля 2019

Это потому, что isset($_POST['submit-form']) возвращает true, даже если вы ничего не вводите в поля Имя и Электронная почта , это значение будет submit строкой при нажатии отправить кнопку, чтобы отправить форму.По этой причине else часть нижнего блока не выполняется.

if(isset($_POST['submit-form'])) {

} else {
      echo "You have entered nothing or your username and/or password is incorrect, please try again.";
}

Используйте var_dump($_POST);, чтобы увидеть полную структуру массива.Сказав это, вы можете использовать следующий фрагмент для достижения желаемого результата:

if(isset($_POST['submit-form'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];

    if(($_POST['name'] != "") && ($_POST['email']!= "")) {    
        echo "This is your name: ".$name."<br>";
        echo "This is your email: ".$email;
        // header('refresh=3;url = ../leden/index.php');
   }else{
       echo "You have entered nothing or your username and/or password is incorrect, please try again.";
   }
}

Проверка и анализ пользовательских входных данных должны быть вашими следующими элементами действий в списке.

...