2012-07-05 73 views
0

我有一个简单的表格发布与形式使用验证码

<form id="myform" action="formprocess.php" method="POST"> 
username:<input type="text" name="username"> 
password:<input type="password" name="password"> 
<?php if($_COOKIE("login-attempt")>"4"){ 
require_once "recaptchalib.php"; 
echo recaptcha_get_html($publickey, $error); 
}?> 
<input type="submit" value="Sign in" id="signIn" name="signIn""/> 
</form> 

的问题是,是验证码(recaptcha_response_field)也发布到formprocess.php页,我想,这个验证码(recaptcha_response_field)值应为在这里检查,如果它是正确的比用户名和密码的值应该被提交给formprocess.php否则重新加载此页面的错误。我怎样才能做到这一点。?

回答

0

那么,在我眼中最容易做的事情就是验证在formprocess.php开头的验证码,如果它不起作用,然后die('CAPTCHA failed),否则运行脚本。即:

function verifyCAPTCHA(){ 
    //function that verifies the captcha... 
} 
if (!verifyCaptcha()){ 
    die('CAPTCHA Failed') 
} 
//the rest of your formprocess.php 

但是,如果你坚持从CAPTCHA验证分隔条件formprocess.php,那么你就可以代替改变形式action属性类似action='captchaValidate.php'

captchaValidate.php那么会是什么样子:

function verifyCAPTCHA(){ 
    //function that verifies the captcha... 
} 
if (!verifyCaptcha()){ 
    die('CAPTCHA Failed') 
}else{ 
    require('formprocess.php') 
} 

当你说你想验证CAPTCHA“这里”,也许你的意思是说,你想送一个AJAX请求,其中你应该检查出https://developers.google.com/recaptcha/docs/display和他们的AJAX API。您可以以这种方式动态调用我提议的解决方案之一。也看看How to do a post request for my reCaptcha ajax api?

+0

我还有一个问题....如果用户已禁用java脚本....在这种情况下,recaptcha将工作,但阿贾克斯将无法正常工作.... – StaticVariable 2012-07-05 15:53:49

+0

短版本:使AJAX可以在正常的'形式'内以正确的动作和所有正确的方式工作。然后制作一个提交按钮,它会触发一个返回false并执行你的AJAX的javascript函数。如果javascript被禁用,表单将只在操作中将数据提交给文件。 这篇文章解释很好http://phpnoob.blogspot.ca/2006/06/making-ajax-web-forms-degrade.html。 – 2012-07-05 20:00:53

+0

解释什么,它也说,如果Java脚本被禁用比形式将正常工作...我们将在那种情况下做什么.. – StaticVariable 2012-07-06 19:02:29