TigerZF
🌐Español

18.3. Adaptadores CAPTCHA

Los siguientes adaptadores se incluyen con Zend Framework por defecto.

18.3.1. Zend_Captcha_Word

Zend_Captcha_Word es un adaptador abstracto que sirve como clase base para la mayoría de los demás adaptadores CAPTCHA. Proporciona mutadores para especificar la longitud de la palabra, el TTL de sesión, el objeto de espacio de nombres de sesión a usar, y la clase de espacio de nombres de sesión a usar para la persistencia si no desea usar Zend_Session_Namespace. Zend_Captcha_Word encapsula la lógica de validación.

Por defecto, la longitud de la palabra es de 8 caracteres, el tiempo de espera de la sesión es de 5 minutos, y se usa Zend_Session_Namespace para la persistencia (usando el espacio de nombres "Zend_Form_Captcha_<captcha ID>").

Además de los métodos requeridos por la interfaz Zend_Captcha_Adapter, Zend_Captcha_Word expone los siguientes métodos:

  • setWordLen($length) y getWordLen() le permiten especificar la longitud de la "palabra" generada en caracteres, y recuperar el valor actual.

  • setTimeout($ttl) y getTimeout() le permiten especificar el tiempo de vida de la sesión token, y recuperar el valor actual. $ttl debe especificarse en segundos.

  • setUseNumbers($numbers) y getUseNumbers() le permiten especificar si se considerarán números como posibles caracteres para la palabra aleatoria, o si solo se usarán letras.

  • setSessionClass($class) y getSessionClass() le permiten especificar una implementación alternativa de Zend_Session_Namespace para usar en la persistencia del token CAPTCHA, y recuperar el valor actual.

  • getId() le permite recuperar el identificador del token actual.

  • getWord() le permite recuperar la palabra generada para usar con el CAPTCHA. Generará la palabra por usted si aún no se ha generado ninguna.

  • setSession(Zend_Session_Namespace $session) le permite especificar un objeto de sesión a usar para persistir el token CAPTCHA. getSession() le permite recuperar el objeto de sesión actual.

Todos los CAPTCHA de tipo palabra le permiten pasar un array de opciones al constructor, o, alternativamente, pasarlas a setOptions(). También puede pasar un objeto Zend_Config a setConfig(). Por defecto, se pueden usar las claves wordLen, timeout, y sessionClass. Cada implementación concreta puede definir claves adicionales o utilizar las opciones de otras maneras.

[Note] Nota

Zend_Captcha_Word es una clase abstracta y no puede instanciarse directamente.

18.3.2. Zend_Captcha_Dumb

El adaptador Zend_Captch_Dumb es en su mayoría autodescriptivo. Proporciona una cadena aleatoria que debe escribirse al revés para validarse. Como tal, no es una buena solución CAPTCHA y solo debe usarse para pruebas. Extiende Zend_Captcha_Word.

18.3.3. Zend_Captcha_Figlet

El adaptador Zend_Captcha_Figlet utiliza Zend_Text_Figlet para presentar un figlet al usuario.

Las opciones pasadas al constructor también se pasarán al objeto Zend_Text_Figlet. Consulte la documentación de Zend_Text_Figlet para más detalles sobre qué opciones de configuración están disponibles.

18.3.4. Zend_Captcha_Image

El adaptador Zend_Captcha_Image toma la palabra generada y la renderiza como una imagen, realizando varias permutaciones de distorsión para hacer difícil descifrarla automáticamente. Requiere la extensión GD compilada con soporte para TrueType o Freetype. Actualmente, el adaptador Zend_Captcha_Image solo puede generar imágenes PNG.

Zend_Captcha_Image extiende Zend_Captcha_Word, y además expone los siguientes métodos:

  • setExpiration($expiration) y getExpiration() le permiten especificar el tiempo de vida máximo que la imagen CAPTCHA puede permanecer en el sistema de archivos. Esto suele ser más largo que el tiempo de vida de la sesión. La recolección de basura se ejecuta periódicamente cada vez que se invoca el objeto CAPTCHA, eliminando todas las imágenes que hayan expirado. Los valores de expiración deben especificarse en segundos.

  • setGcFreq($gcFreq) y getGcFreg() le permiten especificar con qué frecuencia debe ejecutarse la recolección de basura. La recolección de basura se ejecutará cada 1/$gcFreq llamadas. El valor predeterminado es 100.

  • setFont($font) y getFont() le permiten especificar la fuente que usará. $font debe ser una ruta completa al archivo de fuente. Este valor es obligatorio; el CAPTCHA lanzará una excepción durante la generación si no se ha especificado el archivo de fuente.

  • setFontSize($fsize) y getFontSize() le permiten especificar el tamaño de fuente en píxeles para generar el CAPTCHA. El valor predeterminado es 24px.

  • setHeight($height) y getHeight() le permiten especificar la altura en píxeles de la imagen CAPTCHA generada. El valor predeterminado es 50px.

  • setWidth($width) y getWidth() le permiten especificar el ancho en píxeles de la imagen CAPTCHA generada. El valor predeterminado es 200px.

  • setImgDir($imgDir) y getImgDir() le permiten especificar el directorio para almacenar las imágenes CAPTCHA. El valor predeterminado es "./images/captcha/", relativo al script de arranque.

  • setImgUrl($imgUrl) y getImgUrl() le permiten especificar la ruta relativa a una imagen CAPTCHA para usar en el marcado HTML. El valor predeterminado es "/images/captcha/".

  • setSuffix($suffix) y getSuffix() le permiten especificar el sufijo del nombre de archivo para la imagen CAPTCHA. El valor predeterminado es ".png". Nota: cambiar este valor no cambiará el tipo de la imagen generada.

  • setDotNoiseLevel($level) y getDotNoiseLevel(), junto con setLineNoiseLevel($level) y getLineNoiseLevel(), le permiten controlar cuánto "ruido" en forma de puntos y líneas aleatorios contendrá la imagen. Cada unidad de $level produce un punto o línea aleatorio. El valor predeterminado es 100 puntos y 5 líneas. El ruido se agrega dos veces: antes y después de la transformación de distorsión de la imagen.

Todas las opciones anteriores pueden pasarse al constructor simplemente eliminando el prefijo 'set' del método y convirtiendo la letra inicial a minúscula: "suffix", "height", "imgUrl", etc.

18.3.5. Zend_Captcha_ReCaptcha

El adaptador Zend_Captcha_ReCaptcha usa Zend_Service_ReCaptcha para generar y validar CAPTCHAs. Expone los siguientes métodos:

  • setPrivKey($key) y getPrivKey() le permiten especificar la clave privada a usar con el servicio ReCaptcha. Esto debe especificarse durante la construcción, aunque puede sobrescribirse en cualquier momento.

  • setPubKey($key) y getPubKey() le permiten especificar la clave pública a usar con el servicio ReCaptcha. Esto debe especificarse durante la construcción, aunque puede sobrescribirse en cualquier momento.

  • setService(Zend_Service_ReCaptcha $service) y getService() le permiten establecer y obtener el objeto de servicio ReCaptcha.

  • isValid($value, $context = null) valida la entrada del usuario contra el servicio ReCaptcha. $value es un array con las siguientes claves:

    • recaptcha_challenge_field - Valor del campo challenge (oculto) del widget de ReCaptcha

    • recaptcha_response_field - Valor del campo de entrada de usuario del widget de ReCaptcha