Captcha – Obrázek se nevykreslí

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

Ahoj,

implementoval jsem do stránky z Extras Captchu a zdá se, že vše funguje až na vykreslení obrázku. Ve zdrojovém kódu je jen:

<img src="#" width="134" height="64" alt="" />

Kde může být problém? Děkuji za pomoc.

Verze PHP: 5.2

Lopata
Člen | 139
+
0
-

Jakub napsal(a):

Captcha potřebuje ke své práci nějaký Image nebo Captcha presenter, na který se musí odkázat. Ty máš zřejmě ten odkaz špatně a v production módu Nette nezobrazí error, ale #. Zkontroluj

<?php
Captcha::$defaultLinkMask = 'Captcha:show';
?>
Jakub
Člen | 30
+
0
-

Řádek kódu výše mám v Captcha.php (v Extras), sice trochu jinak, ale to by nemělo vadit:

	/** @var string  default image presenter link mask */
	public static $defaultLinkMask = 'Captcha:show';

Potom mám mezi presentry ještě CaptchaPresenter.php. Je potřeba na něj někde ještě linkovat, nebo tak? Jen jsem jej tam vložil.. Díky!

Yrwein
Člen | 45
+
0
-

Captcha z Extras na nové verzi Nette nechodí, je tam pár chyb (ala špatná registrace filtru, neexistující property atp.) a zákeřností (v beforeRender se musí nastartovat session). Snad v brzké době to každopádně budu mít upravené na prefixed Nette 0.9.4, tak to pak někam uploaduji. ,)

Jakub
Člen | 30
+
0
-

Díky za odpověď. Měl by tedy alespoň někdo nějaký tip na dobrou captchu, kterou bych mohl využít místo téhle? Potřebuji captchu implementovat již nyní. Díky za tipy.

Yrwein
Člen | 45
+
0
-

https://forum.nette.org/…ha-pro-nette

…teď uvažuju, jestli se má cenu babrat s předchozím pluginem. // Díky za tohle vlákno, dokopal jsem se vyzkoušet reCaptchu. .))

Editoval Yrwein (29. 6. 2010 21:16)

Jakub
Člen | 30
+
0
-

Zrovna reCaptchu moc nechci – je to možná hloupé, ale nesedí mi vůbec do designu stránky. Potřebuji něco jednoduchého :)

Tharos
Člen | 1030
+
0
-

A co třeba doplnit formulář o vstup typu „kolik se rovná 1 + 1“ ? :) Ta čísla se dají proti vypočítavým robotům (tj. proti těm, kteří i umí počítat) zakódovat ASCII kódy. Mám s tím dobrou zkušenost: roboti se na to nechytají a uživatele to obtěžuje snad i méně, než opisování nějaké rozsypané rýže…

Jakub
Člen | 30
+
0
-

Přesně o tomhle jsem přemýšlel – ale řešil jsem právě to, jestli to na roboty není příliš slabá páka. Mohl bys mi, prosím, popsat podrobněji, jak na ta čísla pomocí ASCII? To je prostě do kódu zapíšu pomocí ASCII znaků? Díky moc!

h4kuna
Backer | 740
+
0
-

tady je tabulka jak zapsat ascii do html

Tharos
Člen | 1030
+
0
-

Takhle můžeš nadefinovat formulář:

protected function createComponentCaptchaForm()
{
	$form = new AppForm();

	$form->addText('captcha', Html::el()->setHtml('&#75;&#111;&#108;&#105;&#107;&#32;&#106;&#101;&#32;&#49;&#32;&#43;&#32;&#49;'))
		->addRule(Form::EQUAL, 'Nebyl zadán správný výsledek příkladu', '2');

	$form->addSubmit('send', 'Odeslat');

	return $form;
}

V prohlížeči se zobrazí vstup „Kolik je 1 + 1“, zatímco ve zdrojovém kódu je jen znět těch entit. Když je k tomu ještě maskovací popisek „Kolik je“ nebo tak nějak, tak IMHO roboti moc šanci nemají. Nebo alespoň mně takhle captcha funguje spolehlivě a osobně mi to přijde lepší, než opisování znaků – IMHO je tohle pro uživatele snažší.

No a pokud by to roboti prolamovali, nahradil bych například operátory slovy (třeba bych zapsal "Kolik je součet číslic jedna a tři). S robotem, který by tohle prolomil, bych si rád potřásl rukou :). Otázkou je, zda se roboti nemůžou chytnout třeba na JavaScript validaci (kde je to validační pravidlo vcelku čitelné), ale v nouzi by to šlo řešit jejím vypnutím u captcha-secured formulářů.

Editoval Tharos (30. 6. 2010 13:23)

Jakub
Člen | 30
+
0
-

Super, díky moc oběma!

Lopata
Člen | 139
+
0
-

Ještě to pole nezapomeň schovat a vyplnit javascriptem.