Php 如何验证此值?

Php 如何验证此值?,php,Php,在文本框中输入两个数字的总值以防止垃圾邮件 <?php $rand = rand(2,9); $rand1 = rand(2,9); echo $rand." + ".$rand1; ?> <span class="stred">*</span> </label> </td> <td> <div cl

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

<?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方法中验证这两个的值???

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

您需要将它们保留在会话中(不要忘了在会话开始之前使用
session\u start()
),如下所示:

然后,您可以在收到表单时执行此操作:

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

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

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

如果您选择验证码路线,这是一个很好的选择

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

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