[addon captcha] Captcha form control
- pmg
- Člen | 372
Diskuse ke stránce Captcha form control
V případě návrhů na vylepšení klidně aktualizujte archiv v repozitáři. WTFPL rules!
- Honza Marek
- Člen | 1664
Nefunguje horní stahovací odkaz, ale neumím to opravit, protože nevidím chybu.
- jasir
- Člen | 746
Hahahaha, hele, teď si mě strašně pobavil :-) Super. Jdu se na tu třídu teda hned podívat abych sem mohl napsat něco podobnýho. Ale už předem díky za práci na té komponentě, už teď vím že se můžu těšít na parádní třídu a perfektní objektový kód :)
Editoval jasir (19. 6. 2009 22:39)
- Honza Marek
- Člen | 1664
Hehe… ale příště se můžem domluvit a něco si nenápadně pochválit navzájem :-D
- Honza Marek
- Člen | 1664
RssControl a CalendarControl. Ovšem musim pořešit filozofickou otázku jak do těch komponent cpát data, aby byly dostatečně obecné a znovupoužitelné.
- jasir
- Člen | 746
pmg napsal(a):
Výborně, přesně tohle jsem chtěl slyšet. :-D Až zjistíš, že to zas tak skvělé není, třeba to poslouží aspoň pro inspiraci. Kód je ve verzi 0.1, tudíž předmětem vývoje.
Tak jsem to tak nějak doprozkoumal. A? Fakt skvělá práce! Krásný kód, spoustu jsem se z toho přiučil. Takže moc díky!
- pmg
- Člen | 372
- Při generování se nepoužívají snadno zaměnitelné znaky.
- Při špatném opsání se vygeneruje obrázek s novým distortem.
Ale abych odpověděl na otázku, muselo by to být submitovací tlačítko,
které by ve třídě zavolalo metodu, která by nastavila
$this->word = NULL
. Snad by to takhle šlo.
Máš pocit, že by tam taková metoda měla být?
- buff
- Člen | 63
Zdravím. Hází mi to chybičku:
Notice: Use of undefined constant IMG_FILTER_SMOOTH - assumed 'IMG_FILTER_SMOOTH' in /home/miroslav/www/teachers/libs/nette-extras/Captcha.php on line 600
Nevíte prosím někdo, co s tím? (Když obě volání filtrů na řádcích 600 a 601 zakomentuju, tak to funguje, ale asi je to bez těch filtrů)
Mám nainstalovaný GD modul do PHP a nahodil jsem naslepo i php-imagemagick, ale žádná změna.
- Jan Tvrdík
- Nette guru | 2595
Nedávno jsem řešil stejný problém. Tohle je důvod celého problému:
Note: This function (imagefilter) is only available if PHP is compiled with the bundled version of the GD library.
Editoval Jan Tvrdík (24. 7. 2009 15:17)
- pmg
- Člen | 372
Asi by šlo v konstruktoru nastavit $this->setDisabled()
a
upravit metodu Captcha::getInput
:
$control = parent::getControl();
$control->disabled = FALSE;
ConventionalRenderer
jinak z pochopitelných důvodů
neumožňuje čistou metodou přidávat další typy prvků, takže je to spíš
takový hack.
Sám jsem control zatím nikde neuplatnil, používám jednodušší ochranu.
$session = Environment::getSession('contact');
if ($session->key === NULL) {
$session->key = mt_rand(20, 99);
}
$key = $session->key;
$a = mt_rand(10, $key - 10);
$b = $key - $a;
$form->addText('age', "$a + $b =")
->addRule(Form::EQUAL, 'Prove that you are human by computing the expression.', $key);
Další věci, které by chtěly fixnout:
- Odstranit řádek
require_once NetteLoader::getInstance()->base . '/Forms/Controls/TextBase.php';
, protože přináší více škody než užitku. A je to hack. [fixed] - Extension method přidávat na
FormContainer
a ne naForm
.FormContainer
by mohl umožnit přidávat jiné prvky pomocí přetěžování, ale celkem chápu, proč to nedělá. [fixed] - Celý projekt na někoho delegovat, nebo utopit. :-)
Editoval pmg (9. 8. 2009 21:37)
- pmg
- Člen | 372
Někdy dříve se to tady řešilo u dvojího zadávání hesla a prý to není pěkné řešení. Cílem prostě je to hnedka kopnout do databáze. :-)
Teď mě napadlo, že by to šlo řešit přidáním více kontejnerů do formuláře, které by oddělily zrno od plev. FormContainer::addContainer().
- PetrP
- Člen | 587
addContainer by ti nepomohl aspoň myslím:
Tedy jen by se ti to zanořilo do dalšího pole
//getValues
array(
'text' => 'bla bka',
'nazev_contejneru' => array(
'captcha' => 'xczxc'
)
)
Možná by ve forms mohlo existovat nejake nastaveni na Controlu, neco jako disabled, ale co by se neprojevovalo do Html, ale jen do getValues
něco jako $form->addText(...)->ignore()
- pmg
- Člen | 372
addContainer by ti nepomohl
Jasně, možná jen u více položek, že by se to nemuselo jmenovat všechno.
Možná by ve forms mohlo existovat nejake nastaveni na Controlu, neco jako disabled, ale co by se neprojevovalo do Html, ale jen do getValues
Ano, ale v něktěrých případech by stejně bylo potřeba předělat
celou metodu getValues
.
- Inza
- Člen | 330
Captcha je zcela dokonalá – a odedneška ji máme i ve 3D!
Homepage: http://beta.dvojmo.cz/…e-framework/
Stránka v Nette/Extras: https://componette.org/search/?…
Thread zde na fóru: https://forum.nette.org/…-formcontrol?…
Co na to říkáte?
- Martin Mates
- Člen | 179
Zdravíčko. Mě ta captcha nefunguje. Dostanu hned
Compile Error
Declaration of Captcha::loadHttpData() must be compatible with that of IFormControl::loadHttpData()
Ná řádku 736 v Captcha.php. Možná se v Nette něco změnilo. Mám verzi z minulého týdne. Nějaké nápady? Díky.
- raketoplan2005
- Člen | 147
Bohužel stále nejsem schopen captchu zprovoznit na Nette 0.9.1 stable:
Originální verze captchy:
Declaration of Captcha::loadHttpData() must be compatible with that of
IFormControl::loadHttpData()
Upravená verze od uživatele „Panda“:
Fatal error: Call to undefined function get_called_class() in
/var/www/web/libs/Nette/Object.php on line 141
- Ondřej Mirtes
- Člen | 1536
U Pandovy verze musíš poslední řádek upravit takto:
- FormContainer::extensionMethod('addCaptcha', array('Captcha', 'addCaptcha'));
+ FormContainer::extensionMethod('FormContainer::addCaptcha', array('Captcha', 'addCaptcha'));
Jde o fix pro PHP 5.2 (které si samo neumí zjistit, jakou třídu rozšiřuješ).
- tom
- Člen | 171
pmg napsal(a):
Sorry, Nette se rychle mění a nestíhám komponentu těmto změnám přizpůsobovat.
jasan, chapu :)
Obrázek je možná v kódu, ale ještě se musí ve druhém požadavku vygenerovat.
kdyz si zobrazim vygenerovany zdrojovy kod tak dostanu neco takove
<img class="captcha-image" src="/web/captcha/show?key=1015" width="154" height="56" alt="" />
ale obrazek nikde :(