我正在嘗試將reCaptcha添加到我在我的網站上的回執表單中。我已經跟隨了一個關於如何去做的視頻教程,但是我正努力使它適應我的表單,它使用ajax調用一個PHP文件,而實際上並沒有提交表單。我已經嘗試了幾個在以前的問題中提出的建議,但沒有一個能夠得到預期的結果,而是在註冊頁面顯示「我不喜歡機器人」。如果你能想到任何的話,一些提示/建議將會很好。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"]);
?>
顯然我在測試中使用了我的實際密鑰,但是出於安全原因,我在此刪除了它。 –
我建議嘗試將示例簡化爲更少的代碼。這個問題當然不需要完整的代碼審查來複制或理解。如果該例子更臨牀且更少tldr,您將獲得更多的專家建議。 – WEBjuju
@WEBjuju,你的代碼對於手頭的問題有點過分了。我已經把它煮沸了,所以希望這會更容易理解。 –