Drupal 7 Captcha dans tous les formulaires Web ou par type de contenu Web Forms


9

Je suis sur D7.

J'ai un type de contenu qui est activé par formulaire Web.

Exigence J'ai besoin d'implémenter captcha pour tous les formulaires Web pour les nœuds de ce type de contenu.

Problème Dans D7, vous êtes censé donner le form_id dans la page des paramètres pour obtenir le captcha dans le formulaire, mais j'aurai beaucoup de formulaires avec tous les différents form_ids.

J'utilise le module Captcha .

Existe-t-il un moyen de mettre en œuvre mon exigence?

Réponses:


9

Vous pouvez ajouter le code suivant à votre template.php

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

cela devrait être placé à l'intérieur du yourthemename_form_alter


Merci. Je viens de recevoir cette solution, de la faire fonctionner, je suis revenu pour répondre à ma propre question et j'ai vu que vous l'aviez déjà. :) Merci pour l'aide quand même.
SGhosh

Pour que votre code personnalisé respecte les autorisations définies pour les personnes qui peuvent ignorer CAPTCHA, ajoutez les éléments suivants à votre logique: if ((strstr ($ form_id, 'webform_client_form')) &&! (User_access ('skip CAPTCHA'))) {$ form ['my_captcha_element'] = array ('#type' => 'captcha', '#captcha_type' => 'default',); }
kbrinner

1

Alternativement, vous pouvez mettre ce code dans un module personnalisé:

/**
* 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',
    );
  }
}

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


0

Pour que votre code personnalisé respecte les autorisations définies dans admin / people / permissions pour les personnes qui peuvent ignorer CAPTCHA, ajoutez ce qui suit à votre logique:

if ((strstr($form_id, 'webform_client_form')) && !(user_access('skip CAPTCHA'))) {
    $form['my_captcha_element'] = array(
      '#type' => 'captcha',
      '#captcha_type' => 'default',
    );
  }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.