CaptchaExtension – nadstavba pro Nette Form
- Felix
- Nette Core | 1196
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
BaseForm
em
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 | 1196
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)