我将在我的表单中有一个验证码,如果验证码输入正确,则提交。我正在使用jQuery AJAX发送输入的代码进行匹配检查。但是无论输入的验证码是否正确,我在jQuery中都得到了相同的结果。
如何在验证码检查中解决这个问题并得到正确的结果?
下面是我的代码,包括PHP和jQuery:
PHP (generateimage.php):
header('Content-type:image/jpeg');
$text = rand(100000, 999999);
...
if (isset($_POST['check_capcha'])) {
$check =$_POST['check_capcha'];
if ($check == $text) {
echo true;
}
}jQuery:
var check_capcha = $("#human_check_sub").val();
check_capcha = parseInt(check_capcha);
$.post("../php/generateimage.php", {check_capcha:check_capcha}, function(data) {
if (data) {
//$.post("../php/core.php");
alert("ok sub");
} else {
$("#img_cap_sub").attr("src", "../php/generateimage.php");
$("#caution_sub").html('<span>Capcha entered incorrect.try again</span>');
}
});发布于 2012-07-25 22:32:02
看起来您为每个ajax请求生成了一个新的capcha,包括在验证尝试时。当您执行验证检查而不是生成新映像时,请跳过rand调用。在生成它时,将正确的值存储在会话变量中,或者在传递带有尝试答案的check_capcha参数时进行检查。
目前,if语句几乎肯定会返回false
就像这样
session_start();
if(!isset($_REQUEST['check_capcha']))
{
$_SESSION['correct'] = rand(100000, 999999);
...
...
...
}
else
{
if($check == $_SESSION['correct'])
{
echo true ;
}
}https://stackoverflow.com/questions/11651956
复制相似问题