CaptchaExtension – nadstavba pro Nette Form

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Felix
Nette Core | 1189
+
0
-

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
+
0
-

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)

Felix
Nette Core | 1189
+
0
-

To nebylo mysleno, ze vice druhy captchy na 1 webu. To bylo mysleno jako nadstavba pro ruzne captchy, aby si kazdy mohl vybrat tu svou.

Filip Procházka
Moderator | 4668
+
0
-

Ano to chápu, proto poukazuju na nesmyslnost, muset nastavit u každého fomuláře captchu znovu :)

Felix
Nette Core | 1189
+
0
-

Jo to mas pravdu. Ale prislo mi to jako dobra featura, kdyby se do nette form pridalo addCaptcha a predem by se to jenom definovalo tak by to lecos usetrilo.

Filip Procházka
Moderator | 4668
+
0
-

Vždyť to jsem naznačil v tom scriptu :)

Felix
Nette Core | 1189
+
0
-

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)