Recaptcha Nicht Überprüfen mit file_get_contents
Verwirrt, warum dies nicht funktioniert. Wenn das Formular abgeschickt wird, erhalte ich die Fehlermeldung, d.h. mein recaptcha-Verifikation fehlgeschlagen ist.
Aus meinem Formular:
<div class="g-recaptcha" data-sitekey="(site-key)"></div>
PHP:
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
$secretKey = "(secret-key)";
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha);
$responseKeys = json_decode($response,true);
if(intval($responseKeys["success"]) === true) {
echo '<h3>Thanks for your message!</h3>';
} else {
echo '<h3>Error</h3>';
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den reCaptcha Dokumentation speziell gibt an, dass der Parameter für die Anfrage an https://www.google.com/recaptcha/api/siteverify müssen per POST geschickt werden. Sie können CURL für dieses.
if(intval($json["success"]) === true) { echo 'success'; } else { echo 'error'; }
if (isset($json->success) && $json->success) { echo 'success'; } else { echo 'error'; }
Das sollte funktionieren, jedoch, wenn Sie wollen$json
um ein assoziatives array, fügen Sie eine zweite argumentjson_decode
mit dem Wert true, wird das Ergebnis als assoziatives array, anstatt ein Objekt 🙂Nicht verwenden
file_get_contents
. Google empfiehlt die Verwendung von POST-requests.Sie können etwas in den Zeilen der folgenden
BEARBEITEN
Yemiez Antwort (habe mir an der Ecke) ist besser im Umgang mit der Reaktion Teil, indem die
json_decode
Funktion.BEARBEITEN
nur Feste ein Tippfehler