Ver índice de contenidos del libro

12.7. Widget para CAPTCHA

El plugin sfFormExtraPlugin incluye un widget para mostrar CAPTCHA llamado sfWidgetFormReCaptcha y basado en el proyecto ReCaptcha:

$w = new sfWidgetFormReCaptcha(array(
  'public_key' => 'CLAVE_PUBLICA_DE_RECAPTCHA'
));
Opción Descripción
public_key La clave pública de ReCaptcha
use_ssl Indica si se utiliza SSL en la conexión (false por defecto)
server_url La URL de la API HTTP
server_url_ssl La URL de la API HTTPS (sólo se utiliza si la opción use_ssl es true)

La opción public_key es la clave pública de ReCaptcha, que puedes solicitar gratuitamente desde la página para solicitar claves de la API.

Nota Si necesitas ayuda sobre este servicio, puedes consultar la documentación de la API de ReCaptcha.

Como no se puede cambiar el nombre de los campos de ReCaptcha, tienes que añadirlos manualmente al asociar un formulario enviado mediante una petición HTTP.

Si por ejemplo el nombre de los campos de tu formulario sigue el formato contacto[%s], este es el código que necesitas para asegurar que la información del CAPTCHA se añade al resto de valores enviados mediante el formulario:

$captcha = array(
  'recaptcha_challenge_field' => $request->getParameter('recaptcha_challenge_field'),
  'recaptcha_response_field'  => $request->getParameter('recaptcha_response_field'),
);
$valoresEnviados = array_merge(
  $request->getParameter('contacto'),
  array('captcha' => $captcha)
);

Este widget hace uso del validador sfValidatorReCatpcha.