Componette

Componette

JZechy

JZechy / Nette-AntiSpam 2.0.5.1

đźš« Nette AntiSpam form control.

download-cloud-line composer require jzechy/nette-antispam

Nette-AntiSpam

Latest stable license Downloads Total Open Issues

Nette-AntiSpam slouží jako formulářová komponenta, která pomocí čtyř metod ochrání formulář proti náhodnému spamu.

Skrytá pole

Do formuláře jsou vygenerována další pole navíc, která jsou před uživatelem skryta JavaScriptem. Pokud bude nějaké z polí vyplněno, bude odesílající identifikován jako spambot.

Skrytí JavaScriptem se dá nahradit vlastní CSS třídou po skrytí pro případ uživatelů bez JavaScriptu.

Časový zámek formuláře

Jelikož spamboti zpravidla odesílají formuláře téměř ihned. Dá se nastavit ve vteřinách doba, pro kterou formulář zablokován.

Kontrolní otázka

Náhodně vygenerovaná, jednoduchá početní úloha, kdy čísla jsou náhodně převáděna na řetězce. Tato otázka je uživateli opět skryta a vyplněna JavaScriptem. Pokud má uživatel JavaScript vypnutý, bude vyzván k vyplnění pole.

Pro tento případ je možné labelu i inputu nastavit vlastní vykreslování.

Prodleva mezi příspěvky

Tato prodleva určuje, za jak dlouho může uživatel znova odeslat příspěvěk.

Composer

composer require jzechy/nette-antispam

Instalace

Do vašeho config.neon do extensions sekce stačí přidat:

antispam: Zet\AntiSpam\AntiSpamExtension

Konfigurace

Komponentu lze nakonfigurovat pomocí následujících nastavení:

  • lockTime ÄŚasovĂ˝ zámek formuláře, bÄ›hem kterĂ©ho se nesmĂ­ odeslat. Nastavuje se oÄŤekávaná prodleva ve vteĹ™inách.
  • resendTime ÄŚas, po kterĂ©m uĹľivatel mĹŻĹľe znova odeslat formulář. Nastavuje se oÄŤekávánĂ­ prodleva ve vteĹ™inách Lze vypnout nastavenĂ­m nuly.
  • numbers Pole ÄŤĂ­sel pro náhodnĂ˝ pĹ™evod na Ĺ™etÄ›zec. ÄŚĂ­sla jsou Ĺ™azena od nuly.
  • question ZnÄ›nĂ­ kontrolnĂ­ otázky.
  • translate Zapne lokalizaci pro kontrolnĂ­ otázku. True/false.

PouĹľitĂ­

Registrované rozšíření formuláře lze pak použít následovně:

protected function createComponentForm() {
  $form = new \Nette\Application\UI\Form();

  // Vlastní prvky formuláře ...
  $form->addAntiSpam("spamControl", 5, 60);
}

Funkce addAntiSpam příjímá jako první parametr název prvku, tento jediný parametr je povinný.

Dále lze přidat jako druhý parametr zámek formuláře a jako třetí čas, po kterém bude uživatel moci odeslat znova formulář.

Ověření formuláře

Formulář lze ověřit dle hodnoty, kterou prvek vrátí - Navrací true, pokud odesílatel antispamem prošel nebo false v opačném případě:

$values = $form->getValues();
if($values->spamControl) {
  // Všechny podmínky pro odeslání formuláře byli splněny.
}

Konfigurace

Settery

$antiSpam->setLockTime(); // Nastaví, kolik vteřin musí uplynout před odesláním formuláře.
$antiSpam->setResendTime(); // Nastaví, kolik vteřin musí uplynout, než je formulář znova odeslán.
$antiSpam->setNumbers(); // Pole čísel vyjádřených slovy pro náhodný převod na řetězec.
$antispam->setQuestion(); // Znění kontrolní otázky.

Gettery

$antispam->getError(); // Kod chyby.
$antispam->getHiddenFields(); // Vrátí generátor skrytých polí. Užitečné pro přepnutí schování z JS na CSS.
$antispam->getQuestionGenerator(); // Vrátí generátor kontrolní otázky s prototypy Labelu a inputu.

Pokud budou splněny všechny podmínky pro odeslání formuláře, bude funkcí getError() navrácena 0. Jinak se vrací číselné označení chyby, které lze testovat proti konstantám ze třídy Zet\AntiSpam\ErrorType.

ErrorType Konstanty

class ErrorType {
	
	use StaticClass;
	
	const NO_ERROR = 0;
	
	const LOCK_TIME = 1;
	
	const RESEND_TIME = 2;
	
	const HIDDEN_FIELDS = 3;
	
	const QUESTION = 4;
}
  • 2.0.5.1 Verze 2.0.5.1

    Odstraněn return type hint.

  • 2.0.5 Verze 2.0.5

    Oprava fungování multiple formulářů s antispamem.

  • 2.0.4 Verze 2.0.4

    Minor fixes.

  • 2.0.3 Verze 2.0.3

    Odebrán testovací debug.

  • 2.0.2 Verze 2.0.2

    Oprava práce se session: Odesílání dat probíhalo po vykreslení.

  • 2.0.1 Verze 2.0.1

    Změna místa generování Html ID a Name pro validaci. V případě formuláře přes multiplier vznikala kolize na ID.

  • 2.0.0 Verze 2.0.0

    • NovĂ© API.
    • Registrace pomocĂ­ extension.
    • MoĹľnost lokalizace kontrolnĂ­ otázky.
    • Skrytá pole se skrĂ˝vajĂ­ javascriptem. Lze pĹ™epnout na CSS.
    • NovĂ˝ přístup k prototype inputu a labelu pro kontrolnĂ­ otázku.
    • ÄŚas pro další odeslánĂ­ formuláře se nastavuje aĹľ po ĂşspěšnĂ©m odeslánĂ­.
  • 1.0.4 Verze 1.0.4

    • Oprava kompability s Nette 2.4
  • 1.0.3

    Oprava 1.0.2 (špatný commit).

  • 1.0.2

    • Opraven zpĹŻsob validace formuláře. Do values se nynĂ­ pĹ™edává boolean hodnota. True pokud formulář prošel, false pokud ne.
  • 1.0.1

    • Integrace Nette Session
    • PĹ™idány prototypes pro label a input pro kontrolnĂ­ otázku
    • Oprava moĹľnosti zadánĂ­ vlastnĂ­ otázky
    • ZrušenĂ­ generovánĂ­ příkladu s násobenĂ­m

    Composer:

    • PĹ™idány závislosti composeru.
  • 1.0.0

price-tag-2-line

Badges

guide-fill

Dependencies

php (^5.6 || ^7.0)
nette/forms (^2.4.0)
nette/http (^2.4.0)
nette/utils (^2.4.0)
nette/di (^2.4.0)
Componette Componette felix@nette.org