生成WordPress的随机数以进行人工检查

时间:2018-07-18 14:53:40

标签: php wordpress random

我有一个自定义表格,并希望通过要求访问者输入给定的随机数进行验证,以通过人工检查来确保表格提交的安全性。

下面是生成随机数的函数:

function random_number() {
    $rand1 = rand(10, 100);
    $rand2 = rand(10, 100);
    $randnum = $rand1 * $rand2;
return $randnum;
}

下面是验证表人工检查:

<label for="humanCheck">
    <?php echo random_number(); ?>
</label>
<input id="humanCheck" type="number" name="message_human" placeholder="Enter above number">

下面是验证码,用于检查访问者是否输入了给定的随机数:

$randomnumbercheck = echo random_number();
if (!$human == 0) {
if ($human != $randomnumbercheck) {
    response("error", $not_human); //not human!
} else {
/// form submission
}

问题是random_number()函数在验证表单和验证代码中生成的随机数是不同的,并且始终是错误的验证。

1 个答案:

答案 0 :(得分:1)

使用输入上下文中给出的数字进行身份验证不是一个好方法!

仅使用确认号码进行安全认证就不是那么简单!您必须在服务器端进行确认。但是在此示例中,用户可以一次又一次地重新发送和重新发送相同的数据,并且将确认该数据!为了防止这种情况,您必须创建一个表并在其中插入记录。通过这种方式,它只是您想要的代码:

<?php

function random_number() {
    $rand1 = rand(10, 100);
    $rand2 = rand(10, 100);
    $randnum = $rand1 * $rand2;
return $randnum;
}


if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $randomnumbercheck =$_POST['hidden'];
   $human=$_POST['message_human'];

if ($human !== $randomnumbercheck) {
    echo "error";
} else {
echo "Correct! <br/>";
}




}else{echo "no post";}
$generatednumber=random_number();
?>
<label for="humanCheck">
   <?=$generatednumber;?>
</label>
<form action="" method="POST">
<input id="humanCheck" type="input" name="message_human" placeholder="Enter above number"/>
<input type="hidden" name="hidden" value="<?=$generatednumber;?>"/>
</form>