A Google féle reCAPTCHA az egyik legjobb ingyenes captcha szolgáltatás, ráadásul a használata sem bonyolult, ezt mutatom be egy nagyon leegyszerűsített példával. A példában annyit csinálunk, hogy megjelenítjük a reCAPTCHA-t egy form-ban, majd a kitöltés után megkérdezzük a Google-t, hogy megfelelően lett-e kitöltve.
1, https://www.google.com/recaptcha/admin oldalon tudsz az oldaladhoz létrehozni egy reCAPTCHA-t v2-t, itt kapsz egy sitekey-t és egy secret key-t, melyekre szükséged lesz később.
2, A teszteléshez hozd létre a captchatest.php fájlt, és illeszd be a következőt:
<html> <head> <title>reCAPTCHA teszt</title> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <h3>Robot vagy?</h3> <form action="<?php echo $_SERVER['REQUEST_URI'];?>" method="POST"> <div class="g-recaptcha" data-sitekey="[sitekey]"></div> <br/> <input type="submit" value="Tuti nem vagyok robot"> </form> </body> </html>
Ami innen a lényeg, hogy a <script src=”https://www.google.com/recaptcha/api.js” async defer></script> a <head> részben szerepeljen, illetve megfelelő sitekey legyen megadva a g-recaptcha div-ben.
3, Ellenőrző PHP
Az előbb létrehozott captchatest.php fájl elejére illeszd be a következő PHP kódot:
<?php // A g-recaptcha-response POST valtozo a captcha kitoltes eredmenye kodolva if (isset($_POST["g-recaptcha-response"])) { $recaptcha=$_POST["g-recaptcha-response"]; //A reCAPTCHA admin oldalon secret key $secret="secret key"; $url="https://www.google.com/recaptcha/api/siteverify"; //Megkerdezzuk a Google-t, hogy rendben van-e a user $check = curl_init(); curl_setopt ($check, CURLOPT_URL, $url); curl_setopt($check, CURLOPT_POST, 1); curl_setopt($check, CURLOPT_POSTFIELDS,"secret=".$secret."&response=".$recaptcha."&remoteip=".$_SERVER["REMOTE_ADDR"]); curl_setopt ($check, CURLOPT_CONNECTTIMEOUT, 100); curl_setopt ($check, CURLOPT_RETURNTRANSFER, true); $respond = curl_exec($check); curl_close($check); //A kapott valaszt dekodoljuk $result = json_decode($respond, TRUE); //Ha a Google szerint robot, akkor ezt kiirjuk, egyébként azt, hogy nem robot. if ( $result['success'] != "true" ) { echo '<h2>A Google szerint robot vagy</h2>'; } else { //Ide johet az a kod, ami akkor fut le, ha atment a latogato a teszten. echo '<h2>Tényleg nem vagy robot</h2>'; } } ?>
Itt a secret változóhoz illeszd be a secret key-t, amit kaptál, utána ha megnyitod böngészőből acaptchatest.php fájlt, akkor ezt kellene látnod: