Ich versuche google reCaptcha zu Prestashop opc Registrierungsseite hinzufügen, ich habe die Checkbox Setup und es funktioniert aber die PHP-Datei erhält nicht die Captcha-Antwort. Lassen Sie mich erklären. Hier ist, was ich bisher getan: In meiner header.tpl Ich habePrestashop - AuthController.php empfängt keine Eingabewerte
<script src='https://www.google.com/recaptcha/api.js'></script>
Um-opc-new-account.tpl, fügte ich
<div class="g-recaptcha" data-sitekey="[my_public_key]"></div>
In meinem AuthController.php ich hinzugefügt
if (Tools::isSubmit('submitAccount') OR Tools::isSubmit('submitGuestAccount')) //if statement was already present
{
// captcha code I added
$reCaptchaUrl='https://www.google.com/recaptcha/api/siteverify';
$reCaptchaSecret = '[my_secret_key]';
$reCaptchaResponse = $_POST['g-recaptcha-response'];
$ip = $_SERVER['REMOTE_ADDR'];
$verifyCaptcha = file_get_contents($reCaptchaUrl."?secret=".$reCaptchaSecret."&response=".$reCaptchaResponse."&remoteip=".$ip);
$captchaReply = json_decode($verifyCaptcha);
if(isset($captchaReply->success) AND $captchaReply->success == true){
$logger = new FileLogger(0);
$logger->setFilename(_PS_ROOT_DIR_."/log/debug.log");
$logger->logDebug("Captcha was successful: ".$reCaptchaResponse);
} else {
//captcha failed
$logger = new FileLogger(0);
$logger->setFilename(_PS_ROOT_DIR_."/log/debug.log");
$logger->logDebug("Captcha failed: ".$reCaptchaResponse);
}
// ... prestashop registration code
}
ich mit den Debug-Nachrichten erfuhr, dass $reCaptchaResponse
Variable leer jedes Mal tatsächlich kommt, auch wenn das captcha geprüft wurde. Irgendwelche Ideen warum?
bearbeiten: Das Formular sendet die Daten tatsächlich zu authentication.php
, welche die folgenden Zeilen
require(dirname(__FILE__).'/config/config.inc.php');
ControllerFactory::getController('AuthController')->run();
Meine Vermutung ist, hat, dass dieses Stück Code vorwärts die Formulardaten an AuthController.php
aber nur vorwärts Felder Es wurde gesagt, dass er weiterleiten soll. Es erkennt das neue Recaptcha-Feld nicht und leitet diese Daten nicht an die Datei weiter. Also müsste ich herausfinden, wer entscheidet, welche Daten weitergeleitet werden.
hm, vielleicht versuchen '$ reCaptchaResponse = Tools :: getValue ('g-recaptcha-response');'? - bitte verschleiern Sie auch die API-Schlüssel !! – defuzed
Nicht gut, es hat nicht funktioniert. Bitte beachten Sie den ursprünglichen Beitrag für weitere Informationen. Übrigens waren die Schlüssel öffentlich und zu Testzwecken, also habe ich sie nicht versteckt. [Googe Dev Guide] (https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha-v2-what-should-i-do) – VeeK
tat stellen Sie sicher, dass zum Beispiel bei einem Netzwerk-Tab von Entwicklungswerkzeugen die 'g-recaptcha-response' beim Versenden des Formulars gepostet wird? - mein Schlechter, wusste nicht über die Testschlüssel – defuzed