проверка электронной почты одно условие и более одного оператора в PHP - PullRequest
0 голосов
/ 02 февраля 2019

Я постараюсь поставить проверку электронной почты с более чем одним случаем.Первый (если): требуется электронная почта.Второй (если): неверный формат электронной почты.Третье (остальное): электронная почта существует (активный пользователь) Четвертое (остальное): электронная почта находится в утверждении (администратор еще не утвержден, поэтому она все еще находится в таблице запросов) Пятый (остальное): все идет хорошо, отправьте данные в базу данных.

Я пытаюсь решить эту проблему с помощью оператора if-else, но в двух последних случаях у меня нет никаких условий, просто нужно пройти эту проверку. Я также пытаюсь выполнить оператор switch, но он не идет после первого случая:

Вот мое подтверждение:

   if(empty($_POST['email']))
     {
         $email=$_POST['email'];
         $emailError="Email is required";
         $error=true;
     }
   else
     {
          $email=$_POST['email'];
          if(!filter_var($email, FILTER_VALIDATE_EMAIL)) 
          {
            $emailError = "Invalid email format";
            $error=true;
          }
          else
              {
                 $sql="SELECT * FROM user WHERE email='$email'";
                 $res=mysqli_query($db,$sql);
                 if (mysqli_num_rows($res) > 0)
                 {
                  $emailError = "Email already exists";
                  $error=true;
                 }
               }

         else 
           {
             $sl="SELECT * FROM request WHERE email='$email'";
             $ress=mysqli_query($db,$sl);
             if (mysqli_num_rows($ress) > 0)
             {
              $emailError = "Your Accout is in process";
              $error=true;
             }
           }
      }   

Ответы [ 3 ]

0 голосов
/ 02 февраля 2019

В строке 1 вы проверяете if(empty($_POST['email'])), поэтому, если оно пустое, вы должны вернуть ошибку, вместо этого вы пытаетесь сохранить пустое значение в строке 3 и т. Д.

0 голосов
/ 02 февраля 2019

хорошо, я поставил условие для $ error, и теперь оно работает нормально.помните, что вы должны положить $ exist = "";в начале.вот мой код:

   if(empty($_POST['email']))
   {
    $email=$_POST['email'];
    $emailError="Email is required";
    $error=true;
   }
   else {
          $email=$_POST['email'];
          if(!filter_var($email, FILTER_VALIDATE_EMAIL))
         {
           $emailError = "Invalid email format";
           $error=true;
         }
         else
             {
                $sql="SELECT * FROM user WHERE email='$email'";
                $res=mysqli_query($db,$sql);
                if (mysqli_num_rows($res) > 0)
                {
                 $emailError = "Email already exists";
                 $error=true;
                 $exist=1;
                }
            }
            if($exist!=1)
            {
              $sl="SELECT * FROM request WHERE email='$email'";
              $ress=mysqli_query($db,$sl);
              if (mysqli_num_rows($ress) > 0)
              {
               $emailError = "Your Accout is in process";
               $error=true;
              }
            }

        }
0 голосов
/ 02 февраля 2019

Ниже описан способ сделать это:

Объявить несколько случайных величин для каждой ошибки. Используя множественное число, если условия делают первую проверку, если она пуста или нет.Сделал вторую проверку, если он соответствует правильному формату, в третьих, если значение существует в дБ или нет

Я показываю пример кода для этого

if(empty($_POST['email'])){
$emptyMail = 'Please provide the Email';
}else{
$notEmpty= 1;
}

if(!){     //check the preg match
wrongFromat = 'Please enter the Mail in correct format';
}else{
$correctFormat = 1;
}

if($notEmpty= 1 && $correctFormat = 1){       //check the database
//if it exist in db 
$exist = 0;
}elseif($notEmpty= 0 || $correctFormat = 0 || $notEmpty= 1 || $correctFormat = 1){
$exist = 0;
}else{
$exist = 1;
}

if($notEmpty= 1 && $correctFormat = 1 $exist = 1){  
//insert in database and send the status pending to the user
}
...