Zend Framework : reCAPTCHA dans un formulaire

Pour protéger ses formulaires contre le bot, spammer etc…, on utilise un captcha. Ce système permet de différencier de manière automatisée un utilisateur humain d’un ordinateur.

Nous allons utiliser Zend_Service_ReCaptcha qui fournit un client pour le Service Web reCAPTCHA.

Qu’est ce que reCAPTCHA ?

recaptcha-example
reCAPTCHA est un système mettant à profit les capacités de reconnaissance des utilisateurs humains mobilisées par les tests Captcha, pour améliorer par la même occasion le processus de numérisation de livres, là où échouent les systèmes de reconnaissance optique de caractères (OCR).

L’idée est de rendre utile une tâche qui peut sembler rébarbative. La technique tient du crowdsourcing.

Concrètement, par rapport à un processus habituel d’authentification par Captcha, ce ne sont pas un mais deux mots qui sont présentés à l’utilisateur. L’un d’eux est un Captcha habituel, dont la solution est par conséquent connue de manière certaine ; seul l’autre est issu de la numérisation d’un livre : c’est celui dont la solution est incertaine voire inconnue et que l’utilisateur va aider à résoudre.

Le système part du principe que si les utilisateurs résolvent correctement le Captcha habituel, alors ils ont aussi déchiffré correctement le mot inconnu. Néanmoins, un mot n’est considéré comme vraiment reconnu que si plusieurs utilisateurs l’ont vérifié en obtenant le même résultat.

Source : Wikipedia

Pour utiliser le service reCAPTCHA, vous devez créer un compte et enregistrer un ou plusieurs domaines d’utilisation afin de générer une clé publique et une privée.

Utilisation de reCAPTCHA dans un Zend_Form :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class My_Form extends Zend_Form
{
	public function init()
	{
		//...
 
		// Captcha
		$pubKey = 'VOTRE_CLE_PUBLIC';
		$privKey = 'VOTRE_CLE_PRIVEE';
		$recaptcha = new Zend_Service_ReCaptcha($pubKey, $privKey);
 
		$adapter = new Zend_Captcha_ReCaptcha();
		$adapter->setService($recaptcha);
 
		$captcha = new Zend_Form_Element_Captcha('recaptcha', array( 'label' => "Anti-spam", 'captcha' => $adapter));
 
		$this->addElement($captcha);
		//...
	}
}

Notes : N’oubliez pas de changer VOTRE_CLE_PUBLIC et VOTRE_CLE_PRIVEE par celles fournie par reCAPTCHA.

Pour plus de détails concernant l’utilisation de formulaire, reCAPTCHA,… je vous invite à consulter la documentation de Zend Framework :

Икони

Bookmark and Share
Hervé — 19 janvier 2009 @ 11:46 Filed under: Internet,Php / mySql,Programmation,Tuto Zend Framework Tag: , , , , ,

2 commentaires »

  1. Des articles sur Zend que j’ai toujours plaisir à dévorer, merci :p

    Commentaire by miboo — 20 janvier 2009 @ 19:26
  2. Quand j’aurai un peu plus de temps (c’est pas gagné). Je prendrai composant par composant pour réaliser des petites tutos/articles.

    Commentaire by Hervé — 21 janvier 2009 @ 09:32

Flux RSS des commentaires de cet article. TrackBack URL

Laisser un commentaire