Nette-AntiSpam Control – Ochraň si svůj formulář

JZechy
Člen | 161
+
+4
-

Úplně neznámé to určitě dle počtu stažení nebude za ty skoro dva roky… Ale pro jistotu to vyvěsím i zde :)

O co se jedná?

Určitě to znáte, někde si otevřete registrace nebo prachsprostou návštěvní knihu a než se nadějete, už se vám tam ruští spamboti registrují a vkládají náhodné příspěvky.

A pokud nechcete obtěžovat uživatele captchou, existuje několik nenáročných možností, kterými lze formulář ochránit. A tyhle jsou zde implementovány.

Jak to dělá

  • Časový zámek Jelikož spambot většinou odešle formulář prakticky okamžitě, lze nastavit po kolik vteřin by formulář neměl být odeslán.
  • Skrytá pole Důkladně taky zpravidla vyplní veškerá pole formuláře. Proto komponenta přidá pár náhodných polí, která jsou běžnému uživateli skryta pomocí JS. Lze případně přepnout i na CSS.
  • Kontrolní otázka Vypočti 3 + jedna a můžeš formulář odeslat. I když vlastně uživatele to trápit nemusí. Otázka se schová a vyplní pomocí JS.
  • Prodleva mezi příspěvky A samozřejmě i ochrana proti chtíči odeslat 50 příspěvků naráz za sebou.

Instalace

Jelikož krom stažení přes composer zde vlastně není co řešit, stačí jenom do configu do sekce extensions přidat
antispam: Zet\AntiSpam\AntiSpamExtension.

Případně se dá ještě nakonfigurovat pomocí několika možností.

Použití

Při vytváření formuláře pak stačí zavolat metodu addAntiSpam(), která příjímá pouze jedinný povinný parametr a to název prvku.

Při zpracování formuláře si pak stačí ověřit, zda prvek vrátil true – nejedná se o spambota, nebo false – někde se v ověření stala chyba.

V případě false lze i pomocí metody getError zjistit, čím dotyčný odesílatel neprošel. Vrací se číselný kod, který lze ověřit proti konstantám ze třídy \Zet\AntiSpam\ErrorType.


Editoval JZechy (7. 1. 2018 20:53)