我已使用captcha
进行表单注册,我有validation engine表单内联验证。我一直在验证captcha
的股权。
<p class="veriText">
<label>Enter the Verification Text </label> <span style="color:red;">*</span>
<input class="validate[required] text-input" type="text" name="captcha" id="captcha" class="text" value="" />
</p>
<img src="<?= get_bloginfo('template_url'); ?>/captcha_code_file.php?rand=<?php echo rand();?>" id='captchaimg'><br/>
PHP验证:(完美运行)
if(strcasecmp($_SESSION['code'], $_POST['captcha']) != 0){
//----mismatch values
}
但我在js中尝试过同样的事情
var session = <?php echo $_SESSION['code'] ?>; // this value is different
// from captcha image
在Javascript / jQuery中提交表单之前是否可以验证验证码?
答案 0 :(得分:1)
假设行var session = <?php echo $_SESSION['code'] ?>;
在您的html页面中。
生成页面时,不会调用验证码图像脚本,因此$_SESSION['code']
未初始化。您获得的值是前一个请求code
的{{1}}。加载页面后(至少是html部分),浏览器决定调用captcha_code_file.php
,调用验证码图像并创建新的captcha_code_file.php
。
我不建议这样做,但如果你想让当前的$_SESSION['code']
尝试使用Ajax请求从另一个php文件中检索新的$_SESSION['code']
(不要调用{{1}或者你的会话将再次重置。
注意:切勿尝试在用户端验证验证码。你正在击败验证码的主要目的。
答案 1 :(得分:1)
使用JavaScript创建一个用于检查capcha的ajax请求,示例如下:
var postData = $("form").serialize();
var requestUrl = '/check_capcha.php';
$.ajax({
type: "POST",
dataType: "json",
data: postData,
url: requestUrl,
success:function(data){
// success or fail message
}
});
check_capcha.php包含:
if(strcasecmp($_SESSION['code'], $_POST['captcha']) != 0){
//----mismatch values
echo 0;
}else{
echo 1;
}
exit;
答案 2 :(得分:0)
您可以在之前输入javascript代码(尽管整个页面的会话相同)。 只需在普通文件中尝试虚拟代码并检查会话值 要么 您可以使用$ .ajax()来调用PHP页面进行验证码验证
答案 3 :(得分:0)
html看起来像这样
$rand = mt_rand(100000,999999);
<span class="captcha"><?php echo $rand; ?></span>
<input name="captcha" type="text" id="captcha-compare" />
在javascript中使用类似的东西来验证引擎
$('#frm-register').submit(function() {
if( $('#captcha-compare').val() != $('.captcha').text() ) {
$('#captcha-compare').validationEngine('showPrompt', 'Invalid captcha', 'load');
return false;
}
});
并在php中首先在会话中获取$ rand然后提交捕获输入文本验证码和会话
答案 4 :(得分:0)
您可以尝试以下代码来验证验证码,或者您也可以在提交代码之前使用AJAX代码验证值。
<script language="JavaScript">
var session = '<?php echo $_SESSION['code'] ?>';
if(Form.captcha.value == session)
{
return true;
}
else
{
Form.submit();
}
</script>