Captcha form control
Pomocí tohoto pluginu můžete do formuláře vložit jednoduchý Turingův test.
Vyzkoušejte také 3D verzi této komponenty.
| Verze | 0.1 |
| Download | Captcha-v0.1.zip (5 kB) |
| Forum thread | http://forum.nette.org/…form-control |
| Autor | Vítězslav Plachý |
| Licence | WTFPL |
Instalace
Do aplikace je nutné přidat následující soubory:
Captcha.php- hlavní soubor s definicí ovládacího prvku formuláře
- příklad umístění:
libs/Nette.Extras/Captcha CaptchaPresenter.php- presenter obrázků s písmeny
- umístěte do adresáře s presentery, např.
app/presenters font.ttf- font použitý pro text v obrázku (zkuste Bitstream Vera)
- standardně se hledá v
app/font.ttf
Příklad použití
Parametry lze nastavit pro každou instanci zvlášť, nebo globálně:
// soubor s použitým písmem
Captcha::$defaultFont = '%appDir%/Vera.ttf';
// velikost fontu pro písmena v obrázku
Captcha::$defaultFontSize = 30;
// počet písmen v obrázku
Captcha::$defaultLength = 5;
// šířka obrázku v pixelech
Captcha::$defaultWidth = 200;
// výšku obrázku svěříme autodetekci
Captcha::$defaultHeight = 0;
// černý text
Captcha::$defaultTextColor = Image::rgb(0, 0, 0);
// na bílém pozadí
Captcha::$defaultBgColor = Image::rgb(255, 255, 255);
// v případě AppForm nastavíme masku odkazu na presenter obrázků
Captcha::$defaultLinkMask = 'Captcha:show';
Po načtení třídy můžeme použít metodu
Form::addCaptcha:
// class_exists("Captcha");
$form = new AppForm($this, 'captcha');
$form->addCaptcha('captcha', 'Antispam')
->setTextColor(Image::rgb(255, 0, 0))
->addRule('Captcha::validateValid', 'Opište správně písmena z obrázku.');
Před vykreslením můžeme přistupovat k prototypům jednotlivých prvků:
// obalovací div
$container = $form['captcha']->getContainerPrototype();
// HTML element obrázku
$image = $form['captcha']->getImagePrototype();
// textovému poli přidáme třídu 'captcha'
$form['captcha']->getControlPrototype()->class('captcha');
Při postupném vykreslování formuláře lze obrázek a textové pole zpracovat zvlášť:
Obrázek: {!=$form['captcha']->getImage()}
Pole: {!=$form['captcha']->getInput()}
Obojí najednou: {!=$form['captcha']->getControl()}
Připojené soubory
- captcha-v0.1.zip 5 kB
