我正在尝试使用数学进行验证码,其中我使用了2个随机变量,将它们相加并与用户输入匹配。但是当我/用户点击提交按钮时,两个变量的值会改变,并且不会与用户输入匹配。我怎么解决这个问题?有什么建议吗?
<?php
$a = rand(1,9);
$b = rand(1,9);
$z = $a + $b;
if(isset($_POST["submit"])){
$captcha = $_POST['captcha'];
if ($captcha != $z){
echo $captcha." and ".$z;
}
else {
echo "true";
}
}
?>
<form class="form-horizontal" method="POST" action="">
<div class="input-group">
<span><?php echo $a."+".$b."= ?"; ?></span>
<input type="text" name="captcha">
</div>
<button name="submit">submit</button>
</form>
答案 0 :(得分:2)
如何保持您希望在会话变量中收到的正确结果?
它对最终用户来说是“不可见的”,并允许您使用$_POST
中的值轻松交叉检查。
这就是我的想法:
<?php
session_start();
if (!isset($_POST['submit'])) {
$a = rand(1,9);
$b = rand(1,9);
$z = $a + $b;
$_SESSION['captcha_result'] = $z;
} else {
$z = $_SESSION['captcha_result'];
unset($_SESSION['captcha_result']);
$captcha = $_POST['captcha'];
if ($captcha != $z) {
echo $captcha . " and " . $z;
} else {
echo "true";
}
exit; // Don't display the form in case the user is summiting a captcha challenge
}
?>
<form class="form-horizontal" method="POST" action="">
<div class="input-group">
<span><?php echo $a."+".$b."= ?"; ?></span>
<input type="text" name="captcha">
</div>
<button name="submit">submit</button>
</form>
您可以阅读有关使用会话here
的更多信息