2017-06-08 3 views
-1

Bitte überprüfen Sie meinen Code. Ich habe 2 Felder für validate E-MailNicht sicher Wie Sie dieses Problem beheben können FILTER_VALIDATE_EMAIL

ist

if ($email == NULL) { 
      $error['email'] = "email is missing"; 
     } 

ein anderer ist

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      $error['emailfilter'] = "email is Invalid"; 
    } 

Aber mein Problem ist, wenn E-Mail-Feld leer/leer. Ich fand diese 2 Warring Show. "E-Mail fehlt" & "E-Mail ist ungültig"; Ich möchte nur einen Kampf zeigen. Zum Beispiel, wenn die E-Mail-Adresse leer ist. Es wird nur angezeigt, dass "E-Mail fehlt" nicht angezeigt wird "E-Mail ist ungültig" und wenn E-Mail nicht gültig ist, wird "E-Mail ist ungültig" angezeigt. Unten ist mein vollständiger Code.

<?php 
    if (isset($_POST['contact'])) { 

     $warning = array(); 
     $firstname = $_POST['firstname']; 
     $lastname = $_POST['lastname']; 
     $email = $_POST['email']; 
     $msg = $_POST['message']; 
     $to = "[email protected]"; 
     $sub = "you got a msg"; 
     $headers = "from: $email"; 

     if ($firstname == NULL) { 
      $error['fname'] = "firstname is missing"; 
     } 
     if($lastname == NULL){ 
      $error['lname'] = "Last name is missing"; 
     } 
     if ($email == NULL) { 
      $error['email'] = "email is missing"; 
     } 

     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      $error['emailfilter'] = "email is Invalid"; 
     } 

     if ($msg == NULL) { 
      $error['msg'] = "message is required"; 
     } 
     if (count($error) == 0) { 
      mail($to, $sub, $msg, $headers); 

      $success = "Message Submited"; 
     } 
    } 


?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>conatact</title> 
    <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
    <form action="" method="POST"> 
     <input type="text" name="firstname" Placeholder="First Name"><br /> 
     <p class="error"><?php if (isset($error['fname'])) { 
      echo $error['fname']; 
     }?></p> 
     <input type="text" name="lastname" Placeholder="Last Name"><br /> 
     <p class="error"><?php if (isset($error['lname'])) { 
      echo $error['lname']; 
     }?></p> 
     <input type="email" name="email" Placeholder="Email"><br /> 
     <p class="error"><?php if (isset($error['email'])) { 
      echo $error['email']; 
     }?></p> 
     <p class="error"><?php if (isset($error['emailfilter'])) { 
      echo $error['emailfilter']; 
     }?></p> 
     <textarea name="message" cols="30" rows="10"></textarea><br /> 
     <p class="error"><?php if (isset($error['msg'])) { 
      echo $error['msg']; 
     }?></p> 

     <input type="password" name="password" Placeholder="Password"><br /> 
     <input type="submit" value="send" name="contact"> 

    </form> 
    <h2 class="error"><?php if (isset($success)) { 
      echo $success; 
     }?></h2> 
</body> 
</html> 
+1

[elsef] (https://secure.php.net/manual/en/control-structures.elseif.php)? – FirstOne

+0

Warum verwenden Sie keine Validierungsbibliothek? vlucas/valitron ist ein anständiger Code – geggleto

+0

Zu Ihrer eigenen und anderen Sicherheit, lesen Sie bitte über den korrekten Umgang mit Benutzereingaben. Ein Ort zum Starten ist [w3schools] (https://www.w3schools.com/php/php_form_validation.asp). –

Antwort

0

Sie wollen elseif dafür verwenden, wird es nur auslösen, wenn die erste Bedingung nicht abgestimmt ist.

if ($email == NULL) { 
    $error['email'] = "email is missing"; 
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    $error['emailfilter'] = "email is Invalid"; 
} 

Dies wird die erste Bedingung überprüfen, haben sie eine E-Mail haben, wenn es nicht $error['email'] bevölkern werden, wenn die E-Mail einen Wert hat, dann wird es die filter_var auf der E-Mail durchführt, es ist Gültigkeit zu prüfen.

+0

Es funktioniert 100%. Ich danke dir sehr. – Musarrof

Verwandte Themen