在文本框中输入两个数字的总值以防止垃圾邮件
<?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方法中验证这两个值?
答案 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是个不错的选择。