2011-03-14 69 views
0

在文本框中輸入兩個數字的總價值,以防止垃圾郵件如何驗證此值?

<?php 
    $rand = rand(2,9); 
    $rand1 = rand(2,9); 
    echo $rand." + ".$rand1; 
?> 
       <span class="stred">*</span> 
      </label> 
    </td> 
    <td> 
      <div class="input-container"> 
       <input name="randm" class="intext" id="county" type="text" /> 
      </div> 

如何在一個POST方法,同時驗證這個值?

回答

2

在代碼中沒有什麼可以驗證的。您無法比較收到的值,因爲您沒有保留原件。您在所顯示的代碼段中丟棄了$rand$rand1

你需要讓他們在會議上(不要忘記session_start()事前),像這樣:

if (strlen($_POST["randm"]) && ($_POST["randm"] == $_SESSION["rand"])) { 

    $_SESSION["rand"] = ""; // unset afterwards to prevent replays 
0

$_SESSION["rand"] = $rand + $rand1; 

然後,當你收到表格,您可能能夠做到這一點

我會使用CAPTCHA來代替。有了數學問題,您仍然需要顯示用戶需要解決的方程,這爲垃圾郵件發送者編寫一個腳本來解析HTML中的操作數,解決數學問題並提交包含正確答案的POST請求打開了大門。自動化這樣的腳本將允許持續濫用您的表單,這種情況實際上並不像人們想象的那樣難以完成。

reCATCHA是一個很好的選擇,你應該選擇去CAPTCHA路線。