我无法使用Javascript验证验证码是否错误或正确

时间:2017-02-18 05:57:36

标签: javascript captcha

这是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>&nbsp;</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中添加更多代码来验证它是错还是正确?

2 个答案:

答案 0 :(得分:0)

您应该使用RegExp.test()。如果传入的字符串通过了模式的测试

,它将返回true / false
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请求验证服务器上的验证码。