CaptchaExtension – nadstavba pro Nette Form

- Felix
- Nette Core | 1271
Zdravim vsechny!
Ve svem dloumani, dloubani a bloumani jsem se POKUSIL vytvorit jakysi doplnek
pro nase uchvatne Nette Forms. Timto doplnkem je znama
Captcha. Jen pro pripomenuti, mame tu super doplnky Captcha a Captcha 3d, ktere funguji
bajecne.
Ja jsem se na to koukal trochu z jineho uhlu a nechat kazdeho at si dela po
svem. Udelal jsem jaky si prvek CaptchaField na ktery jde navazat
libovolny Captcha plugin. At placeny, vlastnorucne vytvoreny, open-source atd.
Tento doplnek implementuje ICaptcha, ktera mu stanovuje potrebne
funkce pro beh. CaptchaField nacte plugin pres
getExtension(), ktera vola getControl() prisluneho
pluginu (vykresleni). Predpokladam, ze kazdy doplnek vygeneruje jakysi
hash nebo jinaci kod, takze pri validovani posilam
validate($hash, $responce) a samotne validovani probiha opet
u prisluneho pluginu. To by tak bylo.. ve zkratce.
Osobne jsem to testoval na reCAPTCHA od googlu. Je to v prvotni verzi, ale myslim ze by se to mohlo nekomu hodit, at uz treba jen pro inspiraci.
Git: https://github.com/…chaExtension
Mrknete na to. Pripadne bourlive ohlasy, posilani penez na ucet (joke xD), navrhy na vylepseni atd. uvidim jen rad.
PS:
Snazil jsem se to udelat podle sveho co nejobecneji a co jsem povazoval za
dulezite. Je mozne, ze nekomu to nebude vyhovovat, tak prosim berte to jen jako
napad ;-)
Editoval Felix (13. 4. 2011 23:21)

- Filip Procházka
- Moderator | 4668
Ještě jsem neviděl, že by někdo používal více druhů captchy na stejném webu.
class BasePresenter extends Nette\Application\Presenter
{
protected function startup()
{
parent::startup();
$captcha = new reCaptcha();
NFormContainer::extensionMethod('addCaptcha', function (NForm $form, $name, $label = NULL) use ($captcha) {
$control = $form[$name] = new self($label);
$control->setExtension($captcha);
$control->addRule('CaptchaField::validateValid', '%label byl špatně vyplněn, zkuste to prosím znovu.');
return $control;
});
}
}
Lepší by to samozřejmě bylo v souboru s nějakým
BaseFormem
Editoval HosipLan (14. 4. 2011 8:06)

- Filip Procházka
- Moderator | 4668
Ano to chápu, proto poukazuju na nesmyslnost, muset nastavit u každého fomuláře captchu znovu :)

- Felix
- Nette Core | 1271
Tak jsem to zkusil trochu upravit a pridal jsem dalsi rozsireni a to
Captchu od Seznamu. Nekdo nejaky postrehy? :)
git: https://github.com/…chaExtension
Editoval Felix (18. 4. 2011 13:06)