2016-05-17 68 views
0

我有一個表單我使用php進行處理,除非條件未滿足時才起作用。而不是使用captia我隱藏一個正常的領域。只有在隱藏字段= =無效的情況下,該過程纔會運行。否則它是假設打破。它可以工作,如果$ hide(隱藏的領域)=什麼也沒有,但它填充字段時引發錯誤。如果不符合條件,就打破if/else語句

<?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

之前什麼一個你想在第一個if區塊中從*中「分裂」*嗎?如果在該區塊中沒有任何可做的事,就把它留空。或者,更好的是,反轉條件(使用'=='而不是'!='),並且只有一個條件塊,而不是將所有邏輯放在'else'塊中。 – David

+1

'break'與if語句無效,請參閱[documentation](http://php.net/break)。即使這樣做,你使用它(至少在你的例子中)似乎是多餘的。 –

+0

好的謝謝,我會這麼做 –

回答

2

你並不需要使用break

替換:

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

只有

if ($hide) { 
    // run email code 

這將確保$隱藏含有一種持續