Ich versuche, reCaptcha zu meinem Formular für die Auswanderung auf meiner Website hinzuzufügen. Ich habe ein Video-Tutorial darüber gemacht, wie es geht, aber ich bemühe mich, es so anzupassen, dass es mit meinem Formular funktioniert, das Ajax verwendet, um eine PHP-Datei aufzurufen, und das Formular nicht wirklich abschickt. Ich habe ein paar Dinge ausprobiert, die in früheren Fragen vorgeschlagen wurden, aber keine scheint das gewünschte Ergebnis zu erhalten und stattdessen "Ich mag keine Roboter" auf der Registrierungsseite anzuzeigen. Einige Tipps/Vorschläge wären nett, wenn Sie sich etwas vorstellen können.Ajax & Google reCaptcha
<div class="g-recaptcha" data-sitekey="6LcXMg0UAAAAABmlDlOGa6onxqqzERZ483XOJbFm"></div>
Javascript
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"]);
?>
Offensichtlich habe ich meinen eigentlichen Schlüssel in meinem Test verwendet, aber ich habe ihn hier aus Sicherheitsgründen entfernt. –
Ich empfehle, das Beispiel auf weniger Code zu reduzieren.Sicherlich erfordert das Problem keine vollständige Codeüberprüfung, um zu duplizieren oder zu verstehen. Sie erhalten mehr Expertenrat, wenn das Beispiel klinischer ist und weniger tldr. – WEBjuju
@WEBjuju, yeh der Code war ein bisschen übertrieben für die Frage zur Hand. Ich habe es gekocht, also wird es hoffentlich viel einfacher zu verstehen sein. –