使用AJAX和PHP重新学习

时间:2013-08-20 18:28:29

标签: php ajax recaptcha

在我的index.php页面中,我在标题中包含了Recaptcha脚本:

<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>

在我的index.php页面中,我使用:

加载homeindex.php
function loadHome() {
    $('#homedynamic').load('php/homeindex.php');
}

现在我的homeindex.php页面包含以下代码(简化):

<script>
$(document).ready(function() {
    Recaptcha.create("6LfqWeYSAAAAAFStYfL9gsCJ5BFWO60sn4CKbwjj", recaptcha_div, {
        theme: "clean",
        callback: Recaptcha.focus_response_field});
});
</script>

<script>
    function aanmelden() {
        vcaptcha = $("#recaptcha_response_field").val();
        vchallenge = $("#recaptcha_challenge_field").val();

         $.ajax({
            type: "POST",
            dataType: "json",
            data: { captcha:vcaptcha, challenge:vchallenge }, 
            url: './query/aanmelden/aanmelden.php',
            success: function(result) {
                if (result.status == 0) {
                    alert (result.omschrijving);
                }
                if (result.status == 1) {
                    //success
                }
            }
        });
    }

</script>

<div class="right">
        <div id="recaptcha_div"></div>
        <div><button id="aanmelden" type="submit" onClick="aanmelden()">X</button>
        </div>

</div>

我有一个aanmelden.php页面:

<?php

function returnResult($status, $omschrijving){
    $result = array(
        'status' => $status,
        'omschrijving' => $omschrijving
    );
    echo json_encode($result);
    exit();
}

require_once 'recaptchalib.php';
require_once '../../php/connect.php';

$privatekey = "6LfqWeYSAAAAAEH6OrMYD9qJ0SfcWkePTPi99CrZ";
$resp = recaptcha_check_answer ($privatekey,
                            $_SERVER["REMOTE_ADDR"],
                            $_POST["recaptcha_challenge_field"],
                            $_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
    $status = 0;
    $omschrijving = "Captcha is niet correct";
    returnResult($status, $omschrijving);
} else {
    $status = 1;
    $omschrijving = "Captcha is correct";
    returnResult($status, $omschrijving);
}

?>

所以我检查了验证码显示,输入值正确传递给aanmelden.php页面...... 但它不会返回任何东西。 我的aanmelden.php页面运行正常。我成功使用函数returnResult。 我唯一注意到的是,如果我评论这些行:

$resp = recaptcha_check_answer ($privatekey,
                            $_SERVER["REMOTE_ADDR"],
                            $_POST["recaptcha_challenge_field"],
                            $_POST["recaptcha_response_field"]);

它会返回状态并为我的其他检查提供omschrijving。 但是这些线路活跃起来,它在某种程度上不起作用......

有人知道为什么吗?此外,recaptchalib.php位于正确的位置......

2 个答案:

答案 0 :(得分:1)

您应该不惜一切代价隐藏您的秘密价值(您在问题中暴露)。

拥有此信息的任何人都可以破解您的验证码,轻松

如果您打算在公共网站上使用此验证,建议您在google recaptcha page重新创建此验证。

答案 1 :(得分:0)

我开始工作了!

不知何故,我犯了使用错误的POST []字段的错误。 我还添加了Recaptcha.reload();如果用户确实犯了错误。