Advertisement
  1. Web Design
  2. Form Design

Hogyan integráld a "No CAPTCHA reCAPTCHA"-t a weboldaladba

Scroll to top
Read Time: 6 min

Hungarian (Magyar) translation by Szabó Péter (you can also view the original English article)

A CAPTCHA valószínűleg a leginkább frusztráló élmény a weben. Eléggé használhatatlan volt a felhasználók többsége számára, pláne a látássérülteknek vagy olyanoknak, akik olyan kisegítő technológiákra támaszkodnak a web eléréhez, mint a képernyőolvasók. Sajnos ugyanakkor a CAPTCHA-k abszolút létfontosságúak a spam elleni küzdelemben.

A necessary evil thanks spammersA necessary evil thanks spammersA necessary evil thanks spammers
Egy szükséges rossz (köszönhetően a spammereknek)

Ironikus módon míg a hagyományos "torzított szöveg" CAPTCHA-k kínosan olvashatatlanok voltak az emberi felhasználók számára, a modern mesterséges intelligencia technológiának sokkal kevesebb gondja akadt a megoldásukkal. Sőt, a Google hasonló technológiát használ házszámok és útjelzések elolvasására, hogy megerősítse a Google Street View helyszíneit!

A Google robotot pontosan el tudják olvasni ezeket

Ez teljesen érthető, mivel a Google saját fejlesztői álltak elő idáig a legjobb CAPTCHA megoldással 2014 végéig. A No CAPTCHA reCAPTCHA használatához semmi más nem kell, csak egy érintés, egy kattintás, vagy a billentyűzettel kiválasztás és a szóköz leütése

A legtöbb esetben ez egyszerű, de ha a Google kockázatelemzése még mindig nem biztos benne, hogy ember vagy, egy második kérés is megjelenik.

Ezt már mindenfelé láthatod a weben működés közben, például a @materialup feliratkozó oldalán.

No CAPTCHA reCAPTCHA beszerzése

Fogjuk rövidre és álljunk neki a No CAPTCHA beállításának.

1. lépés

Először is szükségünk lesz egy API kulcsra, úgyhogy menjünk a https://www.google.com/recaptcha/admin oldalra. Ha hozzá akarsz férni ehhez az oldalhoz, be kell jelentkezned egy Google fiókba. Meg fog kérni, hogy regisztráld a weboldaladat, így adj neki egy megfelelő nevet, majd add meg a domainek listáját (például tutsplus.com), ahol ez a reCAPTCHA használva lesz. Az aldomainek (mint a webdesign.tutsplus.com és code.tutsplus.com) automatikusan beleszámítódnak a fiókba.

2. lépés

Ha ezzel kész vagy, kapni fogsz egy oldal kulcsot és egy partneri titkos kulcsot:

3. lépés

A kulcsok alatt látni fogsz néhány kódrészletet a reCAPTCHA beleillesztéséhez a weboldaladba. Először is ott a JavaScript:

1
<script src='https://www.google.com/recaptcha/api.js'></script>

Azt is meghatározhatod, hogy a 40 támogatott nyelv közül melyiket használod egy paraméter hozzáadásával a karakterlánchoz. Mi itt az es-t adtuk hozzá, ami egy spanyol nyelvű reCAPTCHA-t ad nekünk

1
<script src='https://www.google.com/recaptcha/api.js?hl=es'></script>

Helyezd el ezt a szkript taget az oldalad lábrészébe (vagy az űrlap alá, ahol a reCAPTCHA meg fog jelenni, attól függően, hogy hogyan rangsoroltad a betöltését).

4. lépés

Ezután következik a helymegőrző megadása, amit szükséges hozzáadnod az űrlapod kódjában oda, ahol szeretnéd, hogy a reCAPTCHA megjelenjen:

1
<div class="g-recaptcha" data-sitekey="6LcePAATAAAAAGPRWgx90814DTjgt5sXnNbV5WaW"></div>

Megjegyzés: a data-sitekey attribútum a te kulcsod értékét fogja tartalmazni, nem ezt a kezdetleges példát.

Ezen a ponton vannak további attribútumok is, amik hozzáadhatóak a kinézet és a funkcionalitás testreszabása érdekében a reCAPTCHA-dhoz. Például a data-theme="dark" hozzáadása ehhez a divhez a sötét változatot adja neked, ami talán jobban illeszkedhet az UIdhoz:

További részletekért a reCAPTCHA-d konfigurálásához vess egy pillantást a developers.google.com-ra.

Rakjuk össze

Most, hogy már megvannak a hozzávalók, itt az idő, hogy elhelyezzük őket egy munkakörnyezetbe.

1. lépés

Helyezzük el a szkript tagünket és a helymegőrzőt egy egyszerű űrlapba:

1
<!DOCTYPE html>
2
<html lang="en">
3
  <head>
4
    <title>How to Integrate Google “No CAPTCHA reCAPTCHA” on Your Website</title>
5
  </head>
6
7
  <body>
8
9
    <form action="" method="post">
10
11
      <label for="name">Name:</label>
12
      <input name="name" required><br />
13
14
      <label for="email">Email:</label>
15
      <input name="email" type="email" required><br />
16
17
      <div class="g-recaptcha" data-sitekey="6LcePAATAAAAAGPRWgx90814DTjgt5sXnNbV5WaW"></div>
18
19
      <input type="submit" value="Submit" />
20
21
    </form>
22
23
    <!--js-->
24
    <script src='https://www.google.com/recaptcha/api.js'></script>
25
26
  </body>
27
</html>

Mi itt a barebones oldalszerkezetet használjuk egy űrlappal, ami egy name inputot, egy email inputot és egy elküldés gombot tartalmaz. Itt semmi stilizálást nem használtunk, mert az nem igazán szükséges ehhez a bemutatóhoz.

our captcha formour captcha formour captcha form
Valami ilyesmit kell látnod most

A sikeres reCAPTCHA teszt demonstrálásához le kell futtatnunk néhány szerveroldali ellenőrzést. Jelen esetben ezt PHP-vel csináljuk, ezért mentsük el ezt a fájlt egy új projektbe index.php néven.

2. lépés

Észre fogod venni, hogy az űrlap küldési módja post, így amikor az űrlapadatokat elküldjük, akkor az oldalra egy változótömbben fog visszatérni. Ki tudjuk íratni őket ciklikusan, ezért adjuk hozzá a következőt valahová az oldalhoz:

1
    <?php 
2
      foreach ($_POST as $key => $value) {
3
        echo '<p><strong>' . $key.':</strong> '.$value.'</p>';
4
      }
5
    ?>

Ez fogja mindegyik kulcs/érték párt a $_POST tömbünkből és egy kis formázással megjeleníti őket. Most ha elküldöd az űrlapot, akkor valami ilyesmit kell látnod:

Látni fogod, hogy az érték visszatér name-hez és emailhez, valamint egy értékkel a g-recaptcha-response számára. Ha nem sikerül teljesíteni a CAPTCHA tesztet, ez az érték üres lesz, de ha bepipáltad a "Nem vagyok robot" négyzetet, egy hosszú karakterláncot fogsz látni.

Ezt az értéket kell elküldenünk a Google-nak, hogy ellenőrizhesse, szóval tegyük is ezt meg.

3. lépés

Szerencsére a Google fejlesztői csapata kemény munkát végzett a számunkra, szóval vegyük az irányt a ReCAPTCHA projekthez a GitHubon és szerezz egy másolatot a recaptchalib.php könyvtárról. Helyezd el a projekted gyökérmappájába és utána hivatkozz rá az index.php fájlod elejénél:

1
<?php
2
3
// grab recaptcha library

4
require_once "recaptchalib.php";
5
6
?>

4. lépés

Ez a könyvtár tartalmaz egy függvénygyűjteményt, ami elküldi a g-recaptcha-response-t (a titkos kulcsunkkal együtt) a Google-nak egy HTTP kérésen keresztül. Ők ezután begyűjtik a választ, és ellenőrzik, hogy a CAPTCHA sikeres volt-e vagy sem. Ennek használatához először be kell állítani pár változót a PHP tag lezárása előtt:

1
// your secret key

2
$secret = "6LcePAATAAAAABjXaTsy7gwcbnbaF5XgJKwjSNwT";
3
4
// empty response

5
$response = null;
6
7
// check secret key

8
$reCaptcha = new ReCaptcha($secret);

A ReCaptcha() ellenőrzi, hogy a titkos kulcsunk jelen van-e. Ha nincs ott, akkor megállítja a folyamatot és azt tanácsolja, hogy menjünk és szerezzünk egyet. Ezután végigfuttatjuk a többi részt a következő módon:

1
// if submitted check response

2
if ($_POST["g-recaptcha-response"]) {
3
    $response = $reCaptcha->verifyResponse(
4
        $_SERVER["REMOTE_ADDR"],
5
        $_POST["g-recaptcha-response"]
6
    );
7
}

5. lépés

Feltéve, hogy minden rendben az elküldött űrlapunkkal a $response változó "success"-szel fog visszatérni, és folytathatjuk az űrlapadatok feldolgozását. Valahogy így nézhet ki: eltávolítjuk az iteráló bitet az űrlapadatok közül, majd hozzáadjuk a következő ellenőrzést a fenti űrlaphoz:

1
    <?php
2
      if ($response != null && $response->success) {
3
        echo "Hi " . $_POST["name"] . " (" . $_POST["email"] . "), thanks for submitting the form!";
4
      } else {
5
    ?>

Végezetül hozzáadunk egy záró PHP taget az űrlap végére:

1
<?php } ?>

Ez megjeleníti az űrlapot, hacsak nem lett sikeresen elküldve, mely esetben egy kis köszönő üzenetet jelenít meg. Itt a végső demó.

Konklúzió

Ez csak egy nagyon vázlatos PHP implementációja volt a No CAPTCHA reCAPTCHA-nak. Szabad az út a fejlesztéséhez, remélhetőleg meg tudtuk adni hozzá az alapokat. A könyvtár a Google fejlesztőcsapat érdeme, és szeretnék egy gyors köszönetet mondani Matt Aussaguelnek is azért, hogy felhívta rá a figyelmemet.

Hasznos források

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.