2014-02-18 69 views
-2

現在我得到了太多的垃圾郵件從我接觸的形式,下面是它的HTML視圖,腓避免垃圾郵件沒有驗證碼

<form id="contactForm" action="processform.php" method="post" class="positioned" style="display: inline;"> 
     <ul> 
      <li> 
       <label id="textname">Name :</label> 
       <input type="text" name="senderName" id="senderName" placeholder="Type your name" required="required" maxlength="200"> 
      </li> 
    <li> 
       <label id="textemail">Email :</label> 
       <input type="text" name="senderEmail" id="senderEmail" placeholder="Type your email" required="required" maxlength="200"> 
      </li> 
<li> 
      <label id="textmessage" for="senderfeedback">Feedback :</label> 
      <input type="textarea" name="senderfeedback" id="senderfeedback" placeholder="Type your Message here" required="required"> 
     </li> 
    <li> 
       <label></label> 
       <input type="submit" id="sendMessage" name="sendMessage" class="button" value="Submit"> 
      </li> 
     </ul>  
    </form> 

我覺得有些自動機器人正在訪問我的文件processform.php。有什麼辦法可以阻止它嗎?

+3

爲什麼不能輸入captcha ?? –

+0

沒有驗證碼的解決方案在您開始實施之前往往會被破解 – PeeHaa

+0

您可以添加一個隱藏的輸入表單並檢查它是否被填充。如果您想停止垃圾郵件發送HTML表單,還需要使用驗證碼「是要走的路」。 – Dylan

回答

1

一個簡單的方法可以是這樣的。

提出一個簡單的數學問題,如5+3 = ?(每次隨機生成)並檢查輸入的答案是否正確。

+0

這可以很容易地通過Google搜索,甚至對於一個簡單的機器人來說也是微不足道的 – stckrboy

0

在您的形式,做

session_start(); 
$num1=rand(1, 5); 
$num2=rand(1, 5); 
$_SESSION['num1']=$num1; 
$_SESSION['num2']=$num2; 
echo "<li><label>What is ".(string)($num1)."+".(string)($num2)."?</label><input type='text' id='sum' name='sum'></input></li> 

在你processform.php,讀出的$_POST['sum']值,並檢查是否等於相加會話變量。只有然後處理請求。

如果在代碼中發現錯誤,您可以保留這些錯誤;)

相關問題