내 웹 사이트의 재 입학 양식에 reCaptcha를 추가하려고합니다. 필자는 비디오 튜토리얼을 따라 갔지만, PHP 파일을 호출하기 위해 ajax를 사용하는 폼의 경우 작동하도록 양식을 변경하고 실제로 폼을 제출하지 않으려 고 고군분투하고 있습니다. 이전 질문에서 제안한 몇 가지 사항을 시도했지만 아무도 의도 한 결과를 얻지 못하고 대신 "나는 로봇을 좋아하지 않습니다"라는 메시지를 등록 페이지에 표시합니다. 어떤 힌트/제안은 당신이 생각할 수 있다면 좋을 것입니다.Ajax & Google reCaptcha
<div class="g-recaptcha" data-sitekey="6LcXMg0UAAAAABmlDlOGa6onxqqzERZ483XOJbFm"></div>
자바 스크립트
function Register(){
var Forename = $("#txtForename").val();
var Surname = $("#txtSurname").val();
var Password = $("#txtPassword").val();
var PasswordR = $("#txtPasswordR").val();
var response = $("#g-recaptcha").val();
$.post('functions/php/fncregister.php', {Forename: Forename, Surname: Surname, Password: Password, PasswordR: PasswordR, response: response}, function(data) {
var returnValue = JSON.parse(data);
if (returnValue['data'] == 0){
$('#mdlInfo').html('<p>Your account has been created under the username: <strong><span id="spnUsername">'+returnValue['username']+'</span></strong>. You <strong>must</strong> remember this as you will require it to log into your account.</p><p>Your account has also been added to a moderation que. <strong>You must wait until a member of staff activates your account!</strong></p>');
$("#mdlRegister").modal("show");
}
else if (returnValue['data'] == 1){
$('#divError').html('<p class="text-center text-danger bg-danger" id="pUPInc">Passwords did not match!</p>');
}
else if (returnValue['data'] == 3){
$('#divError').html('<p class="text-center text-danger bg-danger" id="pUPInc">An error occured when adding your details to the Database!</p>');
}
else if (returnValue['data'] == 4){
$('#divError').html('<p class="text-center text-danger bg-danger" id="pUPInc">I don\'t like Robots!</p>');
}
});
}
PHP 여기
<?php
//Retrieves variables from Javascript.
$Forename = $_POST["Forename"];
$Surname = $_POST["Surname"];
$Password = $_POST["Password"];
$PasswordR = $_POST["PasswordR"];
//reCaptcha
$Url = "https://www.google.com/recaptcha/api/siteverify";
$SecretKey = "---KEY---";
$Response = file_get_contents($Url."?secret=".$SecretKey."&response=".$_POST['response']."remoteip=".$_SERVER['REMOTE_ADDR']);
$Robot = json_decode($response);
$data = 0;
if(isset($Robot->success) AND $Robot->success==true){
//OTHER CODE
}
else{
//This code always runs (though this is only meant to happen if reCaptcha detects a robot.
$data = 4;
echo json_encode(["data"=>"$data"]);
?>
확실히 내 테스트에서 실제 키를 사용했지만 보안상의 이유 때문에 여기에서 제거했습니다. –
코드를 줄이기 위해 예제를 종결하는 것이 좋습니다.확실히이 문제는 복제하거나 이해하기 위해 완전한 코드 검토를 수행하지 않습니다. 예가 더 임상적이고 덜 tldr라면 더 많은 전문가의 조언을 얻을 것입니다. – WEBjuju
@WEBjuju, yeh 코드는 당면한 질문에 대해 맨 위에 약간 넘어 섰습니다. 나는 그것을 내려 끓여서 잘 이해하면 훨씬 쉽게 이해할 수있을 것이다. –