开发者

how do I verify this value?

entering total value of two numbers in a text box to prevent spam

<?php
     $rand = rand(2,9);
     $rand1 = rand(2,9);
     echo $rand." + ".$rand1;
?>
               <span class="stred">*</span>
          </label>
     </td>
     <td>
          <div class="input-container">
               <input n开发者_如何学JAVAame="randm" class="intext" id="county" type="text" />
          </div>

How do I verify this value of both in a POST method??


There is nothing to verify in your code. You cannot compare the received value, because you did not keep the originals. You throw away $rand and $rand1 in the snippet that you have shown.

You need to keep them in the session (don't forget session_start() beforehand) like so:

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

Then you might be able to do this when you receive the form:

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

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


I would use a CAPTCHA instead. With math problems, you still have to display the equation for users to solve, which opens the door for a spammer to write a script to parse the operands from your HTML, solve the math problem, and submit a POST request containing the correct answer. Automating such a script would allow for the continuous misuse of your form, a scenario which is actually not as unlikely or difficult to accomplish as one might think.

reCATCHA is a good option should you choose to go the CAPTCHA route.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜