Advertisement
  1. Web Design
  2. UX/UI
  3. Material Design

Jak integrovat "No CAPTCHA reCAPTCHA" na vaší webové stránce

Scroll to top
Read Time: 5 min

() translation by (you can also view the original English article)

CAPTCHA je dost možná ta nejvíce frustrující věc na internetu. Je dost otravná pro většinu uživatelů, kteří jsou nevidomí nebo závislí na asistenčních technologiích jako například čtečka obrazu pro přístup na web. Bohužel, CAPTCHA je naprosto funkční v boji proti spamu.

A necessary evil thanks spammersA necessary evil thanks spammersA necessary evil thanks spammers
Nutné zlo (díky spameři)

Ironií je, že ačkoli tradiční CAPTCHA s "rozostřeným textem" se lidem špatně čte, moderní umělá inteligenci s tím má menší problém. Google dokonce používá podobnou technologii pro čtení čísel domů a značek, pro potvrzení míst na Google Street View.

Roboti Googlu umějí toto přesně přečíst

Je tedy logické, že vývojáři z Googlu přišli s nejlepší řešením CAPTCHA do konce roku 2014. No CAPTCHA reCAPTCHA nepotřebuje nic víc než hnout prstem, kliknout myší nebo stisknout mezerník.

Ve většině případů je to takto jednoduché, pokud si ale Google není jist, že jste člověk, objeví se druhá výzva.

Můžete to již vidět všude na webu, například na podací stránce @materialup.

Získejte No CAPTCHA reCAPTCHA

Pojďme tedy přímo k věci a nastavme No CAPTCHA.

Krok 1

Nejdříve potřebujeme klíč API, takže jděte na https://www.google.com/recaptcha/admin. Pro získání přístupu musíte být přihlášeni na Google účet. Budete vyzvání k registraci vaší webové stránky, takže jí dejte vhodné jméno, potom vypište seznam domén (např. tutsplus.com) kde bude tato reCAPTCHA použita. Subdomény (jako webdesign.tutsplus.com a code.tutsplus.com) jsou započítány automaticky.

Krok 2

S tímto dostanete klíč stránky a jeho tajný partnerský klíč:

Krok 3

Pod klíči uvidíte snippety pro obsažení reCAPTCHA na vaší stránce. První je JavaScript:

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

Můžete také definovat, která ze 40 podporovaných jazyku používáte, přidáním parametru do stringu: Zde přídáme es, což nám nastaví španělskou reCAPTCHA:

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

Umístěte tento script tag v zápatí vaší stránky (nebo pod formulář kde bude reCECAPTCHA, záleží na prioritách nahrávání vašich zdrojů).

Krok 4

Další na řadě je zástupný objekt, který musíte přidat do formuláře, kde chcete, aby se reCAPTCHA objevila:

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

Poznámka: data-sitekey atribut bude držet hodnotu vašeho klíče, ne tento příklad.

Existují jiné atributy, které můžete přidat pro upravení vzhledu a funkcionality vaší reCAPTCHA. Například přidáním data-theme="dark" do tohoto div získáte tmavší verzi, která se může lépe hodit na vaše uživatelské prostředí:

Víc detailu o nastavení vaší reCAPTCHA najdete na developers.google.com

Dáme to dohromady

Nyní máme počáteční přísady a je na čase je vložit do pracovního prostředí.

Krok 1

Vložme náš script tag a zástupný objekt do jednoduchého formuláře:

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>

Zde jsme použili holou stránku s formulářem obsahujícím vložení name a email a tlačítko submit.  Není zde žádné stylování, protože v rámci tutorialu není potřeba.

our captcha formour captcha formour captcha form
Nyní byste měli mít něco podobné tomuto

Pro ověření, že reCAPTCHA test prošel, budeme muset udělat nějaké kontroly na serveru. V tomto případě, to uděláme pomocí PHP, takže uložte tento soubor jako nový projekt index.php.

Krok 2

Všimněte si metody post, takže když jsou data odeslána budou navrácena na tuto stránku uvnitř pole proměnných. Můžeme je vypsat pomocí smyčky, takže přidejte následující někam na svoji stránku:

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

Toto vezme každý pár klíč/hodnota v našem $_POST poli a vypíše je s trochou formátování. Nyní, když odešlete formulář, měli byste vidět něco jako je toto:

Uvidíte navrácenou hodnotu name a email, ale také hodnotu g-recaptcha-response. Pokud jste neprošli CAPTCHA testem, tato hodnota bude prázdná, pokud jste ale zaškrtli "I'm not a robot" checkbox, uvodíte obrovský řetězec znaků.

A je to právě tato hodnota, kterou musíme odeslat Googlu, aby mohla být ověřena, takže to náš další úkol.

Krok 3

Naštěstí, vývojářský tým u Googlu udělal tu těžkou práci za nás, takže jděte na Github, projekt ReCAPTCHA a stáněte si kopii knihovny recaptchalip.php. Umístěte ji do rootu vašeho projektu a referencujte ji navrchu vašeho souboru index.php:

1
<?php
2
3
// grab recaptcha library

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

Krok 4

Knihovna obsahuje kolekci funkcí, které odesílají g-recaptcha-response (spolu s naším tajným klíčem) do Googlu přes HTTP žádost. Shromažďují odezvy a kontrolují zda byla nebo nebyla CAPTCHA úspěšná. Abychom tuto funkci použili, je třeba nejprve nastavit několik proměnných před uzavřením PHP tagu:

1
// your secret key

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

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

8
$reCaptcha = new ReCaptcha($secret);

ReCaptcha() kontroluje, zda je přítomen náš tajný klíč. Pokud ne, ukončí proces a doporučí nám ho získat. Následně uvádíme naše detaily:

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
}

Krok 5

Za předpokladu, že vše je v našem odeslaném formuláři, bude se proměnná $response hlásit zpět s "úspěchem" a můžeme pokračovat ve zpracování údajů o formulářích. Zde je návod, jak by to mohlo vypadat: odstraňte kousek, ve kterém jsme přecházeli data formuláře, a přidejte následující kontrolu nad formulář:

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

Nakonec přidejte za formulář uzavírací PHP tag:

1
<?php } ?>

Formulář se zobrazí, pokud nebyl úspěšně předložen, v takovém případě se zobrazí malé upozornění. Zde je konečné demo.

Závěr

Toto bylo velmi hrubá a hotová PHP implementace No CAPTCHA reCAPTCHA. Je široce otevřená pro vylepšení, ale doufám, že vám ukáže základní pojmy. Kredit za knihovnu jde do týmu vývojářů Google a také bych rád poděkoval Mattu Aussaguelovi za to, že mi to ukázal.

Užitečné zdroje

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.