2016-10-29 2 views
2

Ich möchte ein Formular mit Google Recaptcha erstellen, aber ich weiß nicht, wie Sie diesen Fall implementieren.Wie wird nach dem Abschicken von Google Recaptcha automatisch umgeleitet?

Das ist mein HTML-Code

<form action="redirect.php" method="post"> 
    <div class="g-recaptcha" data-sitekey="xxxxxxxxxx"></div> 
    <input type="submit" value="Submit" > 
</form> 

Wie auf eine Seite umgeleitet, nachdem Google Recaptcha einreichen?

Antwort

2

die Dokumentation:

https://developers.google.com/recaptcha/docs/verify

die Antwort des Benutzers überprüfen

Diese Seite wird erklärt, wie die Antwort des Benutzers auf eine reCAPTCHA Herausforderung Backends aus Ihrer Anwendung zu überprüfen. Wenn ein reCAPTCHA vom Endbenutzer gelöst wird, wird ein neues Feld (g-recaptcha-response) in HTML eingefügt. Sie können die Antwort des Benutzers in eine von drei Arten erhalten:

g-recaptcha-Wirkungs-POST-Parameter, wenn der Benutzer das Formular auf Ihrer Website einreicht grecaptcha.getResponse (opt_widget_id), nachdem der Benutzer die CAPTCHA Herausforderung Als Zeichenfolge abgeschlossen Argument für Ihre Callback-Funktion, wenn Datenrückruf entweder im g-recaptcha-Tag-Attribut oder im Callback-Parameter in der grecaptcha.render-Methode angegeben ist Jede reCAPTCHA-Antwort ist ein Token, das nur einmal verwendet werden sollte. Wenn ein Verifizierungsversuch mit einem bestimmten Token unternommen wurde, kann er nicht erneut verwendet werden. Sie müssen grecaptcha.reset() aufrufen, um den Endbenutzer zur erneuten Überprüfung mit reCAPTCHA aufzufordern.

Nachdem Sie das Antworttoken erhalten haben, müssen Sie es mit reCAPTCHA mithilfe der folgenden API überprüfen, um sicherzustellen, dass das Token gültig ist.

API anfordern

URL: https://www.google.com/recaptcha/api/siteverify

Methode: POST

POST Parameter Beschreibung Geheimnis Erforderlich. Der gemeinsame Schlüssel zwischen Ihrer Website und reCAPTCHA. Antwort erforderlich. Das Benutzerantwort-Token, das von reCAPTCHA bereitgestellt wird und den Benutzer auf Ihrer Website überprüft. remoteip Optional. Die IP-Adresse des Benutzers. API Antwort

Die Antwort ist ein JSON-Objekt:

{ 
    "success": true|false, 
    "challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ) 
    "hostname": string,   // the hostname of the site where the reCAPTCHA was solved 
    "error-codes": [...]  // optional 
} 

PHP Beispiel:

// set post fields 
$post = [ 
    'secret' => $secret, 
    'response' => $_POST['g-recaptcha-response'], 
    'remoteip' => $_SERVER['REMOTE_ADDR'] 
]; 

$ch = curl_init('https://www.google.com/recaptcha/api/siteverify'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 

// execute! 
$response = curl_exec($ch); 

// close the connection, release resources used 
curl_close($ch); 

// do anything you want with your response 
var_dump(json_decode($response)); 
+0

Danke Bruder :) – Zayn

2

in JavaScript, hat Google recaptcha eine Callback-Methode Antwort grecaptcha.getResponse(). Sie können seine Länge überprüfen, die > 0 ist, wenn Captcha erfolgreich war. Lesen

if(grecaptcha.getResponse().length === 0) { //redirect code here }

1

hier ist ein voll funktionierendes Beispiel für PHP v7.x reCaptchaV2 verwendet wird; schrieb basierend auf der Antwort von dieser eigenen Seite von "meda", "Alive to Die" unter der Seite How to json decode in php und der Google ReCaptcha v2 eigenen Beispiel von https://developers.google.com/recaptcha/docs/display. Ich habe die Teile einfach zusammengefügt und dann habe ich das verstanden. Tks zu den Mitwirkenden!

<html> 
     <head> 
     <title>reCAPTCHA V2 demo by softlivre.com.br</title> 
     <script src="https://www.google.com/recaptcha/api.js" async defer></script> 
     </head> 
     <body> 
     <form action="./index.php" method="POST"> 
      <!-- here you must input the site key, not the secret key --> 
      <div class="g-recaptcha" data-sitekey="xxxxxxxxxxxx"></div> 
      <br/> 
      <input type="submit" value="Submit"> 
     </form> 
     </body> 

    <?php 
    // here you must input the secret key, not the site key 
    // don´t worry, it is server side protected and won´t be 
    // visible under the page source, it´s php code from now on... 
    $secret = "yyyyyyyyyyyyy"; 

    // set post fields 
    $post = [ 
     'secret' => $secret, 
     'response' => $_POST['g-recaptcha-response'], 
     'remoteip' => $_SERVER['REMOTE_ADDR'] 
    ]; 

    $ch = curl_init('https://www.google.com/recaptcha/api/siteverify'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 

    // execute! 
    $response = curl_exec($ch); 

    // close the connection, release resources used 
    curl_close($ch); 

    // do anything you want with your response 
    // var_dump(json_decode($response)); // uncomment this to get the json full response 
    $array = json_decode($response,true); 
    //echo "<pre/>";print_r($array); // uncomment this to get the json to array full response/results 

    if($array['success'] == 1){ 
    // here we have confirmed the chalenge, do whatever you want here, as redirecting to another 
    // page. i suggest using $_SESSION in order for really protecting the other page to be 
    // redirected from here to be safe, else anyone may access the other page directly 
    // without passing by the recapctha challenge, so there won´t be any point in this effort! 
     echo "success!" ; 
    } 
    else{ 
     echo "Challenge not accepted so far...."; 
    } 
    ?> 

    </html> 
Verwandte Themen