reCAPTCHA pro Nette

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

reCAPTCHA pro Nette

Napsal jsem implementaci reCAPTCHA do Nette formulářů.

Download (revision #1)

Implementace
  1. Soubory reCAPTCHA.php a reCaptchaLib.php umístíme do adresáře LIBS_DIR/Nette.Extras/reCAPTCHA
  2. Přidáme LIBS_DIR do RobotLoaderu:
<?php
$loader = new RobotLoader();
$loader->addDirectory(LIBS_DIR);
$loader->register();
?>

3. V presenteru přidáme reCAPTCHA pole.

<?php
if(class_exists('reCAPTCHA'))
{
	$form->addRecaptcha('recaptcha_input','reCAPTCHA:')
		->addRule('reCAPTCHA::validate','Transcribe the text from the image correctly.');
}
?>

Myslim, že se to někomu bude hodit.

kravčo
Člen | 721
+
0
-

presunuté do fóra Komponenty

Patrik Votoček
Člen | 2221
+
0
-

do extras s tím…

doomed
Člen | 17
+
0
-

Zdravím, v případě že budete tuhle komponentu používat a nemáte k dispozici PHP >= 5.3, je třeba upravit poslední řádek:

reCAPTCHA.php – původní

<?php
	FormContainer::extensionMethod('addRecaptcha', array('reCAPTCHA', 'addRecaptcha'));
?>

reCAPTCHA.php – po úpravě

<?php
	FormContainer::extensionMethod('FormContainer::addRecaptcha', array('reCAPTCHA', 'addRecaptcha'));
?>

Doufám, že to někomu pomůže.

Editoval doomed (30. 10. 2009 15:46)

pjoter
Člen | 118
+
0
-

tahle komponenta vygeneruje tlacitko ktere vygeneruje novou captchu ? mam php 5.3.0

mám kód

<?php
		$form->addCaptcha('captcha', 'Opište bezpečnostní kód:', 32)
			->setTextColor(Image::rgb(0, 0, 0))
				->addRule(Form::FILLED, 'Opište bezpečnostní kód.')
				->addRule('Captcha::validateValid', 'Opište správně bezpečnostní kód z obrázku.');

		if(class_exists('reCAPTCHA'))
		{
			$form->addRecaptcha('recaptcha_input','reCAPTCHA:')
				->addRule('reCAPTCHA::validate','Transcribe the text from the image correctly.');
		}
?>

v sablone mam

<?php
						<label>Bezpečnostní kód:</strong><br />
						{!=$form['captcha']->getImage()}
						<p>
						{$form['recaptcha_input']->control}
						{$form['recaptcha_input']->label}
						</p>
						<p>{$form['captcha']->label} <br />
						{!=$form['captcha']->getInput()}
						</p>
?>

po nacteni stranky se mi zobrazi pouze text: Invalid public key. Make sure you copy and pasted it correctly. reCAPTCHA:

Editoval pjoter (14. 1. 2010 20:19)

Aurielle
Člen | 1281
+
0
-

Na použití reCaptchy potřebuješ api key, pokud se nemýlím…

pjoter
Člen | 118
+
0
-

co to znamena ? co kde mam pridat ?

Aurielle
Člen | 1281
+
0
-

http://recaptcha.net/…captcha.html a zaregistruj se, ve zdrojáku té komponenty na API key někde bude konstanta nebo něco podobného (případně se to přidá do configu).

pjoter
Člen | 118
+
0
-

aha tak to nic ja chci pouzit captchu z komponent nette a potrebuju akorat pridelat funkci vygenerovat novy kod a myslel jsem ze to dela tahle recaptcha

Aurielle
Člen | 1281
+
0
-

Ne, reCaptcha je další plugin umožňující vyřešení captchy.

Honza Kuchař
Člen | 1662
+
0
-

Nechcete to přidat do extras?