EN | CS | Přihlásit | Registrovat

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


Login to submit a comment