0

我有一个表单filename.php,在其中我调用了一个 jquery 函数,我想在该 jquery 函数中包含以下 php 代码

<?php
  //require_once('recaptchalib.php');
  $privatekey = "your_private_key";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }
  ?>

我怎样才能做到这一点?

编辑

我想在提交表单时定义一个变量:

<?php
  //require_once('recaptchalib.php');
  $privatekey = "your_private_key";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    $cverify = false;
  } else {
    // Your code here to handle a successful verification
    $cverify = true;
  }
  ?>

现在在 js 代码中,如果我有以下代码并且如果我输入正确的验证码,那么它也会警告 false

var cverify = '<?php echo json_encode($cverify); ?>';
        alert(cverify);

那么单击提交按钮时如何获得检查验证?

4

1 回答 1

0

在提交时,使用公式中输入的验证码作为参数向 filename.php 发送一个 ajax 请求,并在 filename.php 中检查您的验证码。如果检查正确,则返回“true”作为字符串,否则返回“false”。

在您的 ajax 请求中,将 filename.php 的返回值与“true”进行比较。如果成功继续提交表单到服务器。

请确保您还检查了您的表单服务器端,因为有人可能禁用了 javasctipt,因此可以提交未经检查的数据。所以你需要再次检查服务器端的验证码。

阿贾克斯调用:

$.ajax({
    url: "filename.php",
}).done(function(jqXHR, textStatus) {
    if (jqXHR.response != "correct") {
        alert('wrong captcha');
    } else {
        alert('correct');
    }
});

文件名.php:

<?php
//require_once('recaptchalib.php');
$privatekey = "your_private_key";
$resp = recaptcha_check_answer ($privatekey,
                            $_SERVER["REMOTE_ADDR"],
                            $_POST["recaptcha_challenge_field"],
                            $_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    echo 'wrong';
} else {
    // Your code here to handle a successful verification
    echo 'correct';
}

/* EOF */

我不知道函数 recaptcha_check_answer() 里面有什么,但你需要会话来检查验证码。而且我没有看到您在 filename.php 中启动会话。

于 2013-10-29T12:40:45.053 回答