Nadie quiere que los formularios de su sitio web sean víctimas de spamming (envío masivo de correos basura). Hoy día tenemos soluciones que evitan este tipo de ataques, por ejemplo los Captcha.
Nadie quiere que los formularios de su sitio web sean víctimas de spamming (envío masivo de correos basura). Hoy día tenemos soluciones que evitan este tipo de ataques, por ejemplo los Captcha.
Un Captcha es una prueba desafío-respuesta utilizada en computación para determinar cuándo el usuario es o no humano. La típica prueba consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podría hacerlo.
Aquí os dejo como incluir un ReCaptcha a nuestro formulario Zend_Form. Utilizaremos Zend_Captcha_ReCaptcha un plugin que incluye Zend Framework.
Los pasos son los siguientes:
1.Crear cuenta para nuestro ReCaptcha y Generar claves.
Creamos nuestra cuenta en http://www.google.com/recaptcha y generamos las claves para nuestro dominio.
2.Añadir las claves a la configuración de aplicación.
En el archivo de application.ini, agregamos las claves para la producción y el entorno de pruebas.
<?php ----------------------- ReCaptcha ------------------------ recaptcha.pubkey ="YOUR-KEY-HERE" recaptcha.privkey ="YOUR-KEY-HERE" [staging : production] recaptcha.publickey ="YOUR-KEY-HERE" recaptcha.privatekey ="YOUR-KEY-HERE" ?>
3.Añadir claves para el registro.
En nuestro Bootstrap.php agregar las claves para el registro.
<?php $this->options=$this->getOptions(); Zend_Registry::set('config.recaptcha',$this->options['recaptcha']); ?>
4.Agregar el elemento de formulario Zend_Form_Recaptcha a nuestro Zend_Form.
En la clase del formulario, se debe configurar el servicio ReCaptcha usando Zend_Service_ReCaptcha. Es aquí donde se pasan los valores de registro público Captcha y las claves privadas. También se puede especificar el tiempo de espera y el tema a usar.
<?php class MyApplication_Forms_ContactUs extends Zend_Form { publicfunction__construct() { //Other Form Stuff Here // // Captcha $recaptchaKeys= Zend_Registry::get('config.recaptcha'); $recaptcha=new Zend_Service_ReCaptcha($recaptchaKeys['publickey'],$recaptchaKeys['privatekey'], NULL,array('theme'=>'clean')); $captcha=new Zend_Form_Element_Captcha('captcha', array( 'label'=>'Type the characters you see in the picture below.', 'captcha'=>'ReCaptcha', 'captchaOptions'=>array( 'captcha'=>'ReCaptcha', 'service'=>$recaptcha ) ) ); $this->addElements( array( $captcha,$submit)); //Other Form Stuff Here - Like a Submit Button, etc) // } } ?>
5.Añadir el formulario a su controlador y vista.
<?php $this->view->form=new MyApplication_Forms_ContactUs(); if($this->getRequest()->isPost()&&$this->view->form->isValid($this->_getAllParams())) { //Yay - The captcha and all other form rules were validated } else var_dump($this->_getAllParams()); ?>
Mostramos el Captcha en la vista:
<?php $this->form->captcha=$form ?>
Si todo va bien nos hemos librado de los robots spam.
...
Última modificación: oct 4, 2024