这是Javascript
<script>
function q_form_val() {
var patt = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
var captcha_entered = document.getElementById("captcha_entered").value;
if (captcha_entered == "") {
alert("Please enter the Captcha");
return false;
}
return true;
}
</script>
这是HTML代码
<div class="row">
<div class="form-group">
<label class="control-label col-sm-3"><font color="#FF0000">*</font><strong>Captcha</strong>
</label>
<div class="col-sm-3">
<?php echo '<img src="captcha.php" alt="captcha">'; ?>
<br/>
<span><input name="captcha_entered" type="text" class="form-control" id="captcha_entered" size="27" maxlength="4"/></br></span>
<input type="hidden" name="captcha_total" id="captcha_total" value="<?php echo $_SESSION['rand_code']; ?>">
</div>
</div>
</div>
<div> </div>
<div class="row">
<div class="col-sm-12">
<center>
<script type="text/javascript">
document.write("<input type=\"submit\" value=\"Submit\" class=\"btn1\"/>");
</script>
<noscript>
<p style="color: red;"><b><i>Please enable JavaScript to continue</i></b>
<p>
</noscript>
</center>
</div>
</div>
我可以检查验证码是否为空 但我无法检查它是否是错误的或正确的验证码 我想我应该在javascript中添加更多代码来验证它是错还是正确?
答案 0 :(得分:0)
您应该使用RegExp.test()
。如果传入的字符串通过了模式的测试
function q_form_val() {
var patt = new RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/);
var captcha_entered = document.getElementById("captcha_entered").value;
if (captcha_entered == "") {
alert("Please enter the Captcha");
return false;
}else if(!patt.test(captcha_entered)){
alert("Bad Captcha Match");
return false;
}
return true;
}
如果您实际上想要将隐藏字段的值与输入的内容进行比较(有关正则表达式的代码无用),您将使用以下代码:
function q_form_val() {
var captcha_entered = document.getElementById("captcha_entered").value;
var captcha_total = document.getElementById("captcha_total").value;
if (captcha_entered == "") {
alert("Please enter the Captcha");
return false;
}else if(captcha_total !== captcha_entered)){
alert("Bad Captcha code");
return false;
}
return true;
}
答案 1 :(得分:0)
问题是你是否使用Javascript验证验证码。验证码的全部目的是绕过自动化脚本,但在HTML中包含答案使得绕过它非常容易。
您应该通过表单提交或AJAX请求验证服务器上的验证码。