Crear un módulo de registro antibot para Drupal 7

Módulo de registro antibot para Drupal 7

Los bots simples se dividen en algunos grupos: el primero de ellos simplemente llena todos los campos con algo de contenido, el segundo grupo más común llena solo los campos obligatorios y realiza un análisis de campo (si tenemos el campo de teléfono, el bot pondrá números (1234567). Para crear un modulo de registro anibot sigue los siguientes pasos:

1) Podemos insertar un campo oculto en el formulario de registro de usuario (si lo desea, puede agregar la regla CSS al ID de entrada, sería mejor, porque sería casi imposible descubrir que el campo es invisible).

Snippet
form['phone'] = array(
      '#type' => 'textfield',
      '#title' => 'Phone',
      '#prefix' => '<div style="display:none;">',
      '#suffix' => '</div>',
    );

2) Crea un campo con una casilla de verificación y una descripción "¡Haz click si no eres un bot!", todo escrito junto.

 

Snippet
 
function yourmodule_form_alter(&$form, &$form_state, $form_id){
 
if ($form_id == 'user_register_form') {
 
    //here we add blank field for bot excluding
    $form['bot_check'] = array(
      '#type' => 'checkbox',
      '#title' => t('I am not a robot.'),
    );
    $form['phone'] = array(
      '#type' => 'textfield',
      '#title' => 'Phone',
    );
    $form['#validate'][] = 'yourmodule_forms_register_validate';
  }                                                                                                                                                                        <span style="line-height: 18px;">}</span>
 
/**
 * Submit callback function for user register form
 */
function yourmodule_forms_register_validate(&$form, &$form_state) {
  if (!empty($form_state['values']['phone'])) {
    form_set_error('phone', t('Sorry, but you are bot!'));
  }                                                                                                                                                                        <span style="line-height: 18px;"> if(</span><span style="line-height: 18px;">empty($form_state['values']['bot_check'])</span><span style="line-height: 18px;">)</span><span style="line-height: 18px;">{ </span><span style="line-height: 18px;">form_set_error('</span><span style="line-height: 18px;">bot_check</span><span style="line-height: 18px;">', t('Sorry, but you are bot!'));</span><span style="line-height:

Comments