Advertisement
  1. Web Design
  2. Form Design

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

by
Difficulty:BeginnerLength:LongLanguages:

Czech (Čeština) translation by Karel Krkoska (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 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:

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:

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:

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:

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 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:

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:

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:

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:

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ář:

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

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
Advertisement
Advertisement
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.