我是编码的新手,所以这可能是一个愚蠢的错误,但我无法弄清楚出了什么问题。我制作了一个电子邮件表格,其功能是检查是否是发送邮件的人。 他们必须回答用随机数生成的简单数学问题。 但是当我尝试检查输入是否正确时,出现了问题。
我正在使用的代码的相关部分: 首先,我生成两个随机数,计算正确的结果并将答案转换为变量:
$number = array( mt_rand(1,5), mt_rand(6,10) );
$outcome = $number[1] - $number[0];
$human = $_POST['message_human'];
答案所在的部分:
<label for="message_human">
<input type="text" style="width: 44px;" placeholder="…" name="message_human"> + <?php echo $number[0];?> = <?php echo $number[1];?>
</label>
检查答案是否正确的部分,并执行操作:
if(!$human == 0){
if($human != $outcome) my_contact_form_generate_response("error", $not_human); //not human!
else { //validate presence of name and message
if(empty($message)){
my_contact_form_generate_response("error", $missing_content);
} else { //ready to go!
$message = "http://url.com" . $url . "\n\n" . $message;
$sent = wp_mail($to, $subject, strip_tags($message), $headers);
if($sent) my_contact_form_generate_response("success", $message_sent);
else my_contact_form_generate_response("error", $message_unsent);
}
}
} else if ($_POST['submitted']) my_contact_form_generate_response("error", $missing_content);
我一直在接受“非人为错误”。 我尝试将$ outcome作为一个数组和所有类型的运算符,但没有任何作用。 当我给$结果一个固定值,如=“2”;一切正常,但我希望它是一个随机数。一些帮助将非常感激。
答案 0 :(得分:1)
如果我理解你的代码是正确的,你就不会保存那些随机数,对吗? 那么当你刚刚生成新的随机数时,如何将答案发送给之前生成的一组随机数,你怎么能得到正确的comperison呢?
可能的解决方案可能是将这些值保存在会话变量中。
session_start();
$_SESSION['outcome'] = $outcome;
稍后将其与此变量进行比较,但请确保它不会被新生成的随机数集覆盖。
if($_POST['message_human'] == $_SESSION['outcome']){
//correct
}