2013-08-27 61 views
-3

我已經完成了一小步,但並不好。我想檢查電子郵件是否以正確的格式有效,名稱不包含數字&也如何添加驗證以檢查數學問題是否正確。任何人都可以幫忙嗎?如何使用PHP驗證表單併發送電子郵件

<?php 
    $submitted = $_POST["submitted"]; 
    if($submitted == "true") 
    { 
    $name = trim($_POST["name"]); 
    $email = trim($_POST["email"]); 
    $subject = trim($_POST["subject"]); 
    $message = trim($_POST["message"]); 
    $answerbox = trim($_POST["answerbox"]); 
    if($name == "") print "<p>Please type your name.</p>"; 
    if($subject == "") print "<p>Please type a subject.</p>"; 
    if($email == "") print "<p>Please type a valid email address.</p>"; 
    if($message == "") print "<p>Please type your message.</p>"; 
    if($answerbox == "") print "<p>Please answer the math question.</p>"; 
    } 

?> 
     <form name="contact" action="form2.php" method="post"> 
      <input type="hidden" name="submitted" value="true"/> 
      <label for="YourName">Your Name:</label> 
      <input type="text" name="name" class="required" /> 

      <label for="YourEmail">Your Email:</label> 
      <input type="text" name="email" class="required"/> 

      <label for="Subject">Subject:</label> 
      <input type="text" name="subject" class="required" /> 

      <label for="YourMessage">Your Message:</label> 
      <textarea name="message" class="required"></textarea> 
      <p class="c3">10 + 5 =<input type="text" name="answerbox" id="answerbox" /></p> 

     <fieldset> 
      <input type="submit" name="submit" id="submit" value="Send" class="required"/> 
      <input type="reset" id="reset" value="Reset"/>  
     </fieldset> 

    </form> 
+1

與http://stackoverflow.com/questions/2146331/php-email-validation-function也許dublicate –

回答

1
<?php 
    if(isset($_POST['name'])) 
    { 
    $name = trim($_POST["name"]); 
    $email = trim($_POST["email"]); 
    $subject = trim($_POST["subject"]); 
    $message = trim($_POST["message"]); 
    $answerbox = trim($_POST["answerbox"]); 
    if(strlen($name)<2) { 
     print "<p>Please type your name.</p>"; 
    }else if(strlen($subject)<2) { 
     print "<p>Please type a subject.</p>"; 
    }else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     print "<p>Please type a valid email address.</p>"; 
    }else if(strlen($message)<10) { 
     print "<p>Please type your message.</p>"; 
    }else if($answerbox != 15) { 
     print "<p>Please answer the math question.</p>"; 
    }else{ 
       $headers = 'From: '.$email. "\r\n" . 
          'Reply-To: '.$email . "\r\n" . 
          'X-Mailer: PHP/' . phpversion(); 
     mail('[email protected]',$subject,$message,$headers); 
     print "mail succesuffully sent"; 
    } 

} 
    ?> 

     <form name="contact" action="form2.php" method="post"> 
      <input type="hidden" name="submitted" value="true"/> 
      <label for="YourName">Your Name:</label> 
      <input type="text" name="name" class="required" /> 

      <label for="YourEmail">Your Email:</label> 
      <input type="text" name="email" class="required"/> 

      <label for="Subject">Subject:</label> 
      <input type="text" name="subject" class="required" /> 

      <label for="YourMessage">Your Message:</label> 
      <textarea name="message" class="required"></textarea> 
      <p class="c3">10 + 5 =<input type="text" name="answerbox" id="answerbox" /></p> 

     <fieldset> 
      <input type="submit" name="submit" id="submit" value="Send" class="required"/> 
      <input type="reset" id="reset" value="Reset"/>  
     </fieldset> 

    </form> 
+0

非常感謝你的幫助! 是否可以在同一頁面上顯示錯誤?只是低於或高於表格? – user2120702

+0

他們顯示在表單上方 – TzoLy

0

驗證電子郵件是最好的,最安全和最簡單的方法是這樣的:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    // invalid emailaddress 
} 

至於其他的答案(尤其是數學的)你不會是最好使用一些javascript在允許表單提交之前,直接在頁面上驗證答案?

的數學可以做這樣的:

if(empty($answerbox)) 
{ 
    echo "<p>Please answer the math question.</p>"; 
} 
elseif ($answer!=15) 
{ 
    echo "Oh oh, the answer seems wrong..."; 
} 
else 
{ 
    // Something else? 
} 

我想你也可能在你的PHP運行在何處以及如何理解不正確。所有PHP代碼在到達用戶之前都會在服務器上執行。在您提交表單並在服務器上處理表單之前,您無法通過PHP檢查答案。

+0

ok..thanks對我使用驗證插件! 呀,它工作正常,但如果用戶沒有啓用js會怎麼樣?我不知道如何在PHP中編寫代碼:( – user2120702

+0

在PHP中,假設您將數學問題從數據庫中提取出來,您可以執行以下操作,在這種情況下,您還應該在數據庫中有答案。 ID,並確認你有正確的答案 – Fluffeh

+0

nope,沒有使用任何數據庫,我想我可以檢查它與PHP,也許使用一些整數函數類似的東西..:P – user2120702