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:
