2016-05-17 8 views
0

Ich habe ein Formular, das ich mit php bearbeite, es funktioniert, außer wenn eine Bedingung nicht erfüllt ist. Anstatt ein Captia zu benutzen, verbirg ich ein normales Feld. Der Prozess soll nur ausgeführt werden, wenn das versteckte Feld = zu nichts ist. sonst soll es brechen. Es funktioniert, wenn $ hide (verstecktes Feld) = nichts, aber es wirft einen Fehler, wenn das Feld ausgefüllt ist.Bricht eine if/else-Anweisung ab, wenn die Bedingung nicht erfüllt ist

<?php 
$to  = '[email protected]'; 
$email = $_POST['email']; 

$name = $_POST['name']; 
$subject = $_POST['subject']; 
$message = $_POST['comments']; 
$hide = $_POST['message']; 
$error=array(); 
if ($hide!=''){ 
    break; 
}else{ 
    if($_POST['name']==''){ 
     $error[]="Your name is required"; 
    } 
    if($_POST['email']==''){ 
     $error[]="Your email is required"; 
    } 
    if($_POST['subject']==''){ 
     $error[]="Subject is required"; 
    } 
    if($_POST['comments']==''){ 
     $error[]="Comments is required"; 
    } 

    if(count($error)>0){ 
     echo "<div class='alert alert-danger'>"; 
     foreach($error as $data) 
     { 
      echo "<p>".$data."</p>"; 
     } 
     echo "</div>"; 
     die(); 
    } 

    $headers = 'From: Attorney Website'. '<'.$email.'>' . "\r\n" . 
     'Reply-To: '. $email . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 

    if(mail($to, $subject, $message, $headers)) 
    { 
     echo "<div class='alert alert-success'>You message has been succesfully received. We will reply you soon.</div>"; 
     die(); 
    } else { 
     echo "<div class='alert alert-danger'>Opps! Something went wrong. Please try again.</div>"; 
     die(); 
    } 
} 
?> 
+4

weiterhin etwas gewährleisten Was ein Wollen Sie in diesem ersten 'if' Block * von * brechen? Wenn in diesem Block nichts zu tun ist, lass es einfach leer. Oder, noch besser, invertiere die Bedingung (verwende '==' anstelle von '! =') Und habe nur einen einzigen bedingten Block, anstatt die gesamte Logik in einen 'else'-Block zu schreiben. – David

+1

'brechen' funktioniert nicht mit if-Anweisungen, siehe [Dokumentation] (http://php.net/break). Selbst wenn dies der Fall wäre, scheint Ihr Gebrauch davon (zumindest in Ihrem Beispiel) trotzdem redundant zu sein. –

+0

ok danke, ich werde das tun –

Antwort

2

Sie brauchen nicht break

Ersetzen zu verwenden:

if ($hide!=''){ 
    break; 
} 
else { 

mit nur

if ($hide) { 
    // run email code 

diese $ hide enthält vor

Verwandte Themen