2013-11-09 248 views
-1

我的聯繫表單有點問題。我想我得到了一切正確,但我總是得到相同的錯誤結果。PHP表單驗證功能不正確

這裏是我的代碼:

<?php 
    if (isset($_POST['contact_name']) && isset($_POST['contact_email']) && isset($_POST['contact_message'])) { 
     $contact_name = $_POST['contact_name']; 
     $contact_email = $_POST['contact_email']; 
     $contact_message = $_POST['contact_message']; 

     if (!empty($contact_name) && !empty($contact_email) && !empty($contact_message)) { 
      echo '0K!'; 
     } else { 
      echo 'Every field is required.'; 
     } 
    } 
?>   
     <form action="contacts.php" method="POST"> 
      Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br> 
      Email:<br><input type="text" name="contact_email" maxlength="50"><br><br> 
      Mensagem:<br> 
      <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br> 
      <input type="submit" value="Enviar"> 
     </form> 

當我填寫的所有字段我得到了相同的結果「每個字段是必需的。」當它顯示'OK!'時。但我知道所有的領域都收到了我寫的東西,因爲我之前測試過。

我知道這是一個基本問題,但我無法弄清楚。

+0

我認爲你的條件是自相矛盾的。 –

+0

外部'if'應該只是'if($ _POST){' - 看起來您正在檢查內部if中的完整性。 – halfer

+0

但這樣,我將無法知道用戶是否正確填寫了所有字段 – Nation

回答

0

您的外部if是多餘的。這些只會在POST操作期間設置,但它們將爲每個POST設置,無論它們是否完整,因爲表單元素將始終提供值。所以,只要使用此:

if ($_POST) { 

接下來,在不引發警告的方式讀出你的價值,如果該指數不存在:

$contact_name = isset($_POST['contact_name']) ? $_POST['contact_name'] : null; 
$contact_email = isset($_POST['contact_email']) ? $_POST['contact_email'] : null; 
$contact_message = isset($_POST['contact_message']) ? $_POST['contact_message'] : null; 

然後,您可以測試平凡,像這樣:

if ($contact_name && $contact_email && $contact_message) { 
    // ok 
} 
1

試試這個:

<?php 
if(isset($_POST['submit'])) { 
    $contact_name = $_POST['contact_name']; 
    $contact_email = $_POST['contact_email']; 
    $contact_message = $_POST['contact_message']; 

    if (empty($contact_name) && empty($contact_email) && empty($contact_message)) { 
     echo 'Every field is required.'; //This would be the message if the field(s) are empty. 
    } else { 
     echo 'OK!'; //This would be the message if all the fields are filled in. 
    } 
} 
?>   
    <form action="contacts.php" method="POST"> 
     Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br> 
     Email:<br><input type="text" name="contact_email" maxlength="50"><br><br> 
     Mensagem:<br> 
     <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br> 
     <input type="submit" value="Enviar" name="submit"> 
    </form> 
+0

'!空'意味着'不爲空' – artur99

+0

哦,抱歉沒有正確思考。 – Shad

1

錯誤是:!empty($contact_mensagem)(該消息已被halfer編輯),但您實際上有$contact_message。 我試了我的電腦上的代碼,它的工作原理:

<?php 
    if (isset($_POST['contact_name']) && isset($_POST['contact_email']) && isset($_POST['contact_message'])) { 
     $contact_name = $_POST['contact_name']; 
     $contact_email = $_POST['contact_email']; 
     $contact_message = $_POST['contact_message']; 

     if (!empty($contact_name) && !empty($contact_email) && !empty($contact_message)) { 
      echo '0K!'; 
     } else { 
      echo 'Every field is required.'; 
     } 
    } 
?>   
     <form action="contacts.php" method="POST"> 
      Nome:<br><input type="text" name="contact_name" maxlength="25"><br><br> 
      Email:<br><input type="text" name="contact_email" maxlength="50"><br><br> 
      Mensagem:<br> 
      <textarea name="contact_message" rows="6" cols="30" maxlength="1000"></textarea><br><br> 
      <input type="submit" value="Enviar"> 
     </form> 
+0

@Nation,這是錯誤嗎? – artur99