2016-03-20 9 views
1

So scheint es ziemlich einfach, ich habe eine Google-Recaptcha zu meinem website mit den folgenden HTML-Codes hinzugefügt.Google Recaptcha (PHP)

<script src='https://www.google.com/recaptcha/api.js'></script> 
<div class="g-recaptcha" data-sitekey="My key would be here"></div> 

Jedoch können Leute noch das Formular ausfüllen und E-Mail senden, ohne das Captcha abzuschließen. (So ​​müssen sie keine Rätsel lösen, die sie gerade durchbringen können, was natürlich Bots zulässt)

Also, ich brauche PHP-Code, der überprüft, ob die Benutzer tatsächlich "Ticked" oder "Beendet" den Recaptcha. Dann können sie weiter Mail senden.

Mein PHP-Code:

if ($_POST['submit']) { 
     if ($email != '') { 
      if ($human == '4') {     
       if (mail ($to, $subject, $body, $from)) { 
        echo '<p>You have successfully submitted your information to PS4RS. Subscribers to our mailing list will begin to periodically receive updates.</p>'; 
       } else { 
        echo '<p>Something went wrong, go back and try again!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; 
       } 
      } else if ($_POST['submit'] && $human != '4') { 
       echo '<p>You answered the anti-spam question incorrectly!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; 
      } 
     } else { 
      echo '<p>You need to fill in all required fields!!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; 
     } 
    } 
?> 

Ich habe wirklich keine Ahnung, wie in PHP kodieren, das ist mein bester Versuch. Diese

+3

Sie hilft nicht alles umgesetzt [innerhalb der serverseitigen Validierung der Dokumentation] (https://developers.google.com/recaptcha/alt/docs/php # Schnellstart). Gib das zuerst. – Ohgodwhy

+0

@brimstone Nein. Das ist nur seine PHP für das bestehende Formular, nichts mit Google Recaptcha dort zu tun. – Ohgodwhy

+0

Wenn Sie [Google it] (https://www.google.no/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#safe=active&q=google+recaptcha+example) finden Sie Beispiele für Wie müssen Sie Google reCAPTCHA in Ihren Code implementieren? – Qirel

Antwort

1

Das ist nicht meine ursprüngliche Antwort also werde ich es zitieren. Ich fand diese Antwort here

<?php 
    $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $yoursecret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']); 
    $googleobj = json_decode($response); 
    $verified = $googleobj->success; 
    if ($verified === true){ 
    //do stuff 
    } 

so für Ihre Zwecke ...

<?php 
if($_POST['submit']) { 
    $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=". $yoursecret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']); 
    $googleobj = json_decode($response); 
    $verified = $googleobj->success; 
    if($verified === true) { 
    if(mail($to, $subject, $body, $from)) { 
     echo '<p>You have successfully submitted your information to PS4RS. Subscribers to our mailing list will begin to periodically receive updates.</p>'; 
    } else { 
     echo '<p>Something went wrong, go back and try again!</p><p><input type="button" value="Go Back" onclick="history.back(-1)" class="goback" /></p>'; 
    } 
    } 
} 
?> 


SEIEN SIE SICHER ZU IHRER SECRET KEY IN FÜR $yoursecret

ADD

(Das ist verschieden von der Site-Schlüssel)


Hoffnung, die

+0

abgeschrieben Vielen Dank grundlegender Code :) – alpc

-1

ist von der offiziellen Google Entwickler-Webseite:

<?php 
    require_once('recaptchalib.php'); 
    $privatekey = "your_private_key"; 
    $resp = recaptcha_check_answer ($privatekey, 
          $_SERVER["REMOTE_ADDR"], 
          $_POST["recaptcha_challenge_field"], 
          $_POST["recaptcha_response_field"]); 

    if (!$resp->is_valid) { 
     // What happens when the CAPTCHA was entered incorrectly 
     die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
    "(reCAPTCHA said: " . $resp->error . ")"); 
    } else { 
     // Your code here to handle a successful verification 
    } 
?> 

Sag mir, wenn dies hilft

+0

nicht finden die recaptcha php api hat – krummens