<?php
session_start();
$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];
$str='';
if($_SESSION['errStr'])
{
$str='<div class="error">'.$_SESSION['errStr'].'</div>';
unset($_SESSION['errStr']);
}
$success='';
if($_SESSION['sent'])
{
$success='<h1>Thank you!</h1>';
$css='<style type="text/css">#contact-form{display:none;}</style>';
unset($_SESSION['sent']);
}
?>
<script>
function formValidate()
{
var captcha=document.form.captcha.value;
var num=/^[0-9]+$/;
if(captcha=="")
{
document.getElementById("errCaptcha").innerHTML="Enter Captcha";
}
else if(!captcha.match(num))
{
document.getElementById("errCaptcha").innerHTML="Enter Valid Captcha";
}
else
{
document.getElementById("errCaptcha").innerHTML="";
var ez=1;
}
if(ez==1)
{
return true;
}
else
{
return false;
}
}
</script>
<form id="form3" name="form" action="" onsubmit='return formValidate()' method="post">
<fieldset class="last">
<p>
<label for="captcha"><?php echo $_SESSION['n1']; ?> + <?php echo $_SESSION['n2'];?> =<span class="style1">*</span><span style="color:red" id="errCaptcha"></span></label></td>
<input type="text" name="captcha" id="captcha" />
</fieldset>
<p class="submit"><button type="submit">Send</button></p>
</form>
这就是我正在做的,但无法验证验证码 例如:2 + 2 = 4 但如果我写2 + 2 = 10 它没有验证
答案 0 :(得分:0)
从我的问题和代码中我可以看出,您似乎缺少至少1个javascript函数,这是将生成的CAPTCHA与用户输入的CAPTCHA进行比较所必需的。 你缺少的另一个功能(除非我的JavaScript很糟糕)是一个实际生成CAPTCHA的函数。
如果没有这两个重要函数,整个脚本将无效。最后,您是否有使用这么多不同$_SESSION
变量的特殊原因?在代码中添加更多格式将证明将来会有所帮助,以便您可以更好地阅读代码并帮助我们阅读它...
虽然这违背了我的判断,但这可能对你有所帮助:javascript based captcha's