2014-02-12 141 views
0

使用下面的腳本(取自模板),我添加了一個簡單的驗證問題來防止垃圾郵件(什麼是2 + 2?)。截至目前,填寫提交按鈕時,error.php頁面出現,但表單被提交爲空白。PHP聯繫表格驗證字段

如何確保表單在驗證安全性問題後才能提交?

<?php 

$EmailTo = "[email protected]"; 
$Subject = "website"; 
$name = Trim(stripslashes($_POST['name'])); 
$email = Trim(stripslashes($_POST['email'])); 
$number = Trim(stripslashes($_POST['number'])); 
$message = Trim(stripslashes($_POST['message'])); 

// validation 
$validationOK=true; 
if (!$validationOK) { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.php\">"; 
    exit; 
} 

// prepare email body text 
$Body = ""; 
$Body .= "Name: "; 
$Body .= $name; 
$Body .= "\n"; 
$Body .= "Tel: "; 
$Body .= $number; 
$Body .= "\n"; 
$Body .= "Email: "; 
$Body .= $email; 
$Body .= "\n"; 
$Body .= "Message: "; 
$Body .= $message; 
$Body .= "\n"; 

// send email 
$submit = mail($EmailTo, $Subject, $Body, "From: <$email>"); 

// redirect to success page 
if(isset($_POST['submit'])){ 
if(isset($_POST['answer']) && $_POST['answer'] == 4){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">"; 
}else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.php\">"; 
} 
} 
?> 

形式的代碼如下:

<div id="form-holder" class="cont"> 
         <h2>Contact form</h2> 
        <form method="post" action="send.php" class="uniform get-in-touch"> 

        <div class="i-h"> 
        <input type="text" name="name" id="name"/> 
        <div class="i-l"><span>Name</span></div></div> 

        <div class="i-h"> 
        <input type="email" name="email" id="email"/> 
        <div class="i-l"><span>E-mail</span></div></div> 

        <div class="i-h"> 
        <input type="text" name="number" id="number"/> 
        <div class="i-l"><span>Number</span></div></div> 

        <div class="t-h"> 
        <textarea name="message" rows="32" cols="8" id="message" placeholder="Please leave us a message."></textarea> 
        </div> 

        <br><p>What is 2+2?</p><input type="text" name="answer" id="answer" /> 

        <input type="submit" name="submit" value="Submit" class="submit-button"> 
          <a href="#" class="do-clear">Clear</a> 
       </form> 
        </div> 

回答

0

另一種方法是做什麼用純PHP:

if(!empty($_POST['answer']) && $_POST['answer'] == 4) { 
    // send email 
    $submit = mail($EmailTo, $Subject, $Body, "From: <$email>"); 
} else { 
    // Set error 
    echo "Verification failed."; 
} 
+0

你好,感謝您對本 - 我有一種感覺,「答案」部分應該已經控制了「提交」進程。 if(!empty($ _POST ['answer'])&& $ _POST ['answer'] == 4){ //發送電子郵件 $ submit = mail($ EmailTo,$ Subject,$ Body,「From :<$email>「); \t print「」; } else { //設置錯誤 print「」; } ?> – Stanley

0

如果您正在爲HTML5,你可以使用required屬性。

<br><p>What is 2+2?</p><input type="text" name="answer" id="answer" required/>