Cómo bloquear dominios de sus campos de texto

¿Le interesa mejorar la seguridad de sus formularios web? Con un simple fragmento de PHP, puede bloquear eficazmente los envíos de dominios específicos directamente en el campo de texto de su formulario. En este tutorial, te guiaremos a través del proceso paso a paso de implementación de esta función, asegurando que tus formularios permanezcan protegidos de spam y envíos maliciosos.

Creación del formulario

Comenzaremos creando un nuevo formulario. Nuestro formulario es un simple formulario de contacto en el que les pediremos que dejen su nombre, correo electrónico y cualquier comentario adicional que deseen añadir.

Para nuestro formulario de ejemplo, añadiremos los campos Nombre, Correo electrónico, Texto de párrafo y Captcha personalizado (para mayor seguridad).

comience creando su formulario y añadiendo sus campos

Si necesita ayuda, consulte nuestra útil guía sobre cómo crear un nuevo formulario.

Bloqueo de los dominios

Ahora es el momento de añadir nuestro(s) fragmento(s). Si necesita ayuda sobre cómo y dónde añadir fragmentos, consulte este tutorial.

Campo de texto de párrafo

/**
 * Block domains inside the Paragraph Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_textarea( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_textarea' , 'wpf_dev_prevent_domains_textarea', 10, 3 );

Este fragmento de código buscará dentro de Texto del párrafo para cualquier combinación de las palabras que aparecen dentro del campo preg_match y bloquear el envío del formulario si es verdadero.

si el campo de comentario contiene cualquier tipo de nombre de dominio, el formulario no se enviará

Campo de texto de una línea

También puede utilizar la misma funcionalidad para el campo Texto en una línea. El fragmento será casi idéntico con la excepción del nombre del filtro.

/**
 * Block domains inside the Single Line Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_text( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_text' , 'wpf_dev_prevent_domains_text', 10, 3 );

Y eso es todo lo que necesita. ¿Quiere bloquear también cualquier blasfemia en estos campos? Echa un vistazo a nuestro tutorial sobre Cómo bloquear los envíos de formularios que contengan blasfemias.

Acciones de referencia

PREGUNTAS FRECUENTES

P: ¿Puedo utilizarlo en el campo de formulario de texto enriquecido?

R: ¡Por supuesto! Aquí está el fragmento para el campo de formulario de texto enriquecido.

/**
 * Block domains inside the Rich Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_richtext( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_richtext' , 'wpf_dev_prevent_domains_richtext', 10, 3 );

P: ¿Cómo puedo aplicar esto a otros campos?

A: Casi todos los campos tienen algún tipo de validación. La mayoría de los campos utilizarán do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ). Usted acaba de reemplazar _{$field_type} con el tipo de campo.