https://github.com/jzechy/nette-antispam
đźš« Nette AntiSpam form control.
https://github.com/jzechy/nette-antispam
antispam control form input nette nette-antispam
Last synced: 6 months ago
JSON representation
đźš« Nette AntiSpam form control.
- Host: GitHub
- URL: https://github.com/jzechy/nette-antispam
- Owner: JZechy
- License: mit
- Created: 2016-03-24T14:07:02.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-10-06T19:34:19.000Z (about 7 years ago)
- Last Synced: 2025-04-17T22:30:54.261Z (6 months ago)
- Topics: antispam, control, form, input, nette, nette-antispam
- Language: PHP
- Homepage:
- Size: 33.2 KB
- Stars: 5
- Watchers: 2
- Forks: 8
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Nette-AntiSpam
[](https://packagist.org/packages/jzechy/nette-antispam)
[](https://github.com/JZechy/Nette-AntiSpam/blob/master/LICENSE)
[](https://packagist.org/packages/jzechy/nette-antispam)
[](https://github.com/JZechy/Nette-AntiSpam/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Ä›:
```php
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Ä›:
```php
$values = $form->getValues();
if($values->spamControl) {
// Všechny podmĂnky pro odeslánĂ formuláře byli splnÄ›ny.
}
```
## Konfigurace
### Settery
```php
$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
```php
$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
```php
class ErrorType {
use StaticClass;
const NO_ERROR = 0;
const LOCK_TIME = 1;
const RESEND_TIME = 2;
const HIDDEN_FIELDS = 3;
const QUESTION = 4;
}
```