我该如何验证这个值?

时间:2011-03-14 04:13:55

标签: php

在文本框中输入两个数字的总值以防止垃圾邮件

<?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 个答案:

答案 0 :(得分:2)

您的代码中无需验证。您无法比较收到的值,因为您没有保留原件。您将$rand$rand1丢弃在您显示的代码段中。

您需要将它们保留在会话中(不要事先忘记session_start()),如下所示:

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

然后,当您收到表格时,您可能会这样做:

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

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

答案 1 :(得分:0)

我会改用CAPTCHA。对于数学问题,您仍然需要显示用户要解决的等式,这为垃圾邮件发送者编写脚本以打开HTML中的操作数,解决数学问题并提交包含正确答案的POST请求打开了大门。自动化这样的脚本将允许持续滥用您的表单,这种情况实际上并不像人们想象的那样不可能或难以实现。

如果你选择去CAPTCHA路线,

reCATCHA是个不错的选择。