使用recaptcha发布表单

时间:2012-07-05 12:44:57

标签: php jquery recaptcha

我有一个简单的表格

<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 else重新加载此页面并显示错误。我怎么能这样做??

1 个答案:

答案 0 :(得分: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?

相关问题