验证码不在php工作,聪明

时间:2013-05-05 17:29:12

标签: php ajax smarty recaptcha

我正在尝试在我的网站上实现验证码,但它总是会出错 不正确,验证码溶胶。

请参阅我的代码

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;
    }

请点击此处It is an Ajax call

1 个答案:

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

这是相同数据的哈希,并且以某种方式感觉更干净。试试吧?