0

我正在尝试在我的网站中实现验证码,但它总是给出错误的验证码溶胶。

请看我的代码

require_once('recaptchalib.php');
$publickey = "xxxxxxxxxxxxxx";
$privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxx";

$resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
            echo "You got it!";
    } else {

            echo "Error=". $resp->error;
    }

请在此处查看这是一个 Ajax 调用

4

1 回答 1

0

看起来数据的发送validateCapture被破坏了。目前,您的 AJAX 调用中有这个:

data: "recaptcha_challenge_field=" + challengeField +
    "&recaptcha_response_field=" + responseField,

这会导致调试变量转储:

Array
(
    [recaptcha_challenge_field] => 03AHJ_VuskQR9VZwr6Uo5DllF4CL1GHDLajHiTQGHI3SE2pryBlSW-BMVeWMAudfOaTmOZu8vAPx5DaYjFoIjxhursn-GnXQwGA4T8Mn1rLL7E8Vrz-xVRs9c4c0-Gb9FxFhlNjy257xiTmvWikzjmRfsa9I3PZQcDSwgDu7Gq6A_RBC9NrV-cyqw
    [amp;recaptcha_response_field] => capture ceptICA
)

第二个的键看起来很错误,因为它包含编码的 & 符号。您可能可以将 换成&非 urlencoded 值&,但我更喜欢这个:

data: {
    recaptcha_challenge_field: challengeField,
    recaptcha_response_field: responseField
}

这是相同数据的哈希,不知何故感觉更干净。试试看?

于 2013-05-05T18:03:56.800 回答