2010-12-14 20 views
1

Je:La validation par e-mail, en utilisant les instructions if if ne permet pas de continuer à vérifier s'il y a eu une erreur avec le premier if?

if(isset($_POST['submit'])) { 
    if (empty($name)) { 
     echo'<span class="error">ERROR: Missing Name </span><br/>'; 
    } else if(empty($phone) || empty($email)) { 
     echo'<span class="error">ERROR: You must insert a phone number or email</span><br/>'; 
    } else if(!preg_match('/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/', $email)) { 
     echo'<span class="error">ERROR: Please Insert a valid Email</span><br/>'; 
    } else { 
     mail("[email protected]", "Monthly Specials Email", 
      "Name: $name 
      Email: $email 
      Phone Number: $phone 
      Comment: $comment", "From: $email"); 
     echo'<span id="valid">Message has been sent</span><br/>'; 
    } 
} 

Comment pourrais-je vérifier toutes ces questions sans utiliser d'autre si? Lorsque j'utilise else si, il vérifie la première instruction if, s'il y a un problème, il ne continuera pas à passer par l'autre si les instructions suivantes.

Des idées? Merci

Répondre

4

Vous pouvez collecter toutes les erreurs dans un tableau comme celui-ci:

if (isset($_POST['submit'])) { 
    $errors = array(); 
    if (empty($name)) { 
     $errors[] = '<span class="error">ERROR: Missing Name </span><br/>'; 
    } 
    if (empty($phone) || empty($email)) { 
     $errors[] = '<span class="error">ERROR: You must insert a phone number or email</span><br/>'; 
    } 
    if (!preg_match('/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/', $email)) { 
     $errors[] = '<span class="error">ERROR: Please Insert a valid Email</span><br/>'; 
    } 
    if ($errors) { 
     echo 'There were some errors: '; 
     echo '<ul><li>', implode('</li><li>', $errors), '</li></ul>'; 
    } else { 
     mail("[email protected]", "Monthly Specials Email", 
      "Name: $name\n". 
      "Email: $email\n". 
      "Phone Number: $phone\n". 
      "Comment: $comment", "From: $email"); 
     echo'<span id="valid">Message has been sent</span><br/>'; 
    } 
} 

Avec cela, vous pouvez vérifier toutes les exigences et signaler toutes les erreurs et pas seulement le premier.

+0

Merci beaucoup cela fonctionne parfaitement – Chris

0

vous pouvez utiliser try ... catch instructions pour la vérification des erreurs comme ceci. chaque fois que vous rencontrez une condition où une erreur doit être générée, vous pouvez utiliser la clause throw new Exception.

0

Utilisez un drapeau sale. Vérifiez-les tous et ajoutez le message à la variable sale.

1

utilisation:

$error = 0; 
if(empty($var1)){ $error = 1; } 
if(empty($var2)){ $error = 1; } 
if(empty($var3)){ $error = 1; } 
if(empty($var4)){ $error = 1; } 
if(empty($var5)){ $error = 1; } 

if($error > 0) 
{ 
    // Do actions for your errors 
} 
else 
{ 
    // Send Email 
} 
+0

Voici comment je le fais, bien que parfois je vais faire un tableau de messages d'erreur si je peux boucler sur eux et afficher toutes les erreurs. Si le tableau d'erreur est vide, je sais que je suis prêt à partir. –

0

Essayez ceci:

if(isset($_POST['submit'])) { 
    $errors = array(); 

    if (empty($name)) { 
     $errors[] = 'Missing Name'; 
    } 
    if(empty($phone) || empty($email)) { 
     $errors[] = 'You must insert a phone number or email'; 
    } 
    if(!preg_match('/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/', $email)) { 
     $errors[] = 'Please Insert a valid Email'; 
    } 

    if (!empty($errors)) { 
     for ($i = 0; i < count($errors); $i++) { 
      echo sprintf('<span class="error">ERROR: %s</span><br/>', $errors[$i]); 
     } 
    } else { 
     mail("[email protected]", "Monthly Specials Email", 
              "Name: $name 
              Email: $email 
              Phone Number: $phone 
              Comment: $comment", "From: $email"); 
     echo'<span id="valid">Message has been sent</span><br/>'; 
    } 
} 
0
if(isset($_POST['submit'])) { 
    $valid = true; 
    if (empty($name)) { 
     echo'<span class="error">ERROR: Missing Name </span><br/>'; 
     $valid = false; 
    } 

    if(empty($phone) || empty($email)) { 
     echo'<span class="error">ERROR: You must insert a phone number or email</span><br/>'; 
     $valid=false; 
    } 

    if(!preg_match('/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/', $email)) { 
     echo'<span class="error">ERROR: Please Insert a valid Email</span><br/>'; 
     $valid = FALSE; 
    } 

    if($valid) { 
     mail("[email protected]", "Monthly Specials Email", 
      "Name: $name 
      Email: $email 
      Phone Number: $phone 
      Comment: $comment", "From: $email"); 
     echo'<span id="valid">Message has been sent</span><br/>'; 
    } 
}