Drupal 7 Captcha en todos los formularios web o por tipo de contenido.


9

Estoy en D7.

Tengo un tipo de contenido que está habilitado para formularios web.

Requisito Necesito implementar captcha para todos los formularios web para nodos de este tipo de contenido.

Problema En D7, se supone que debe dar el form_id en la página de configuración para obtener captcha en el formulario, sin embargo, tendré un montón de formularios con todos los diferentes form_ids.

Estoy usando el módulo Captcha .

¿Hay alguna forma de implementar mi requisito?

Respuestas:


9

Puede agregar el siguiente código a su template.php

if (strstr($form_id, 'webform_client_form')) {
        $form['my_captcha_element'] = array(
            '#type' => 'captcha',
            '#captcha_type' => 'image_captcha/Image',
        );
    }

esto debe colocarse dentro de yourthemename_form_alter


Gracias. Acabo de recibir esta solución, la puse a funcionar, volví a responder mi propia pregunta y vi que ya la tenía. :) Gracias por la ayuda, no obstante.
SGhosh

Para que su código personalizado respete los permisos establecidos para aquellas personas que pueden omitir CAPTCHA, agregue lo siguiente a su lógica: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('skip CAPTCHA'))) {$ form ['my_captcha_element'] = array ('#type' => 'captcha', '#captcha_type' => 'default',); }
kbrinner

1

Alternativamente, puede poner este código en un módulo personalizado:

/**
* Implementation of hook_form_alter().
*/
function mymodule_form_alter(&$form, $form_state, $form_id) {
  if (preg_match("/^webform_client_form_[0-9]+$/",$form_id) && user_is_logged_in() == FALSE) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
    );
  }
}

Fuente: https://drupal.org/node/255795


0

Para que su código personalizado respete los permisos establecidos en admin / people / permissions para aquellas personas que pueden omitir CAPTCHA, agregue lo siguiente a su lógica:

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.