Como bloquear domínios de seus campos de texto

Interessado em aumentar a segurança de seus formulários da Web? Com um simples snippet de PHP, você pode bloquear efetivamente os envios de domínios específicos diretamente no campo de texto do formulário. Neste tutorial, vamos orientá-lo no processo passo a passo de implementação desse recurso, garantindo que seus formulários permaneçam protegidos contra spam e envios mal-intencionados.

Criando o formulário

Começaremos criando um novo formulário. Nosso formulário é apenas um formulário de contato simples, no qual pediremos que os usuários deixem seu nome, e-mail e quaisquer comentários adicionais que queiram acrescentar.

Para o nosso formulário de exemplo, adicionaremos os campos de formulário Nome, E-mail, Texto do parágrafo e Captcha personalizado (para segurança adicional).

Comece criando seu formulário e adicionando seus campos

Se precisar de ajuda, consulte nosso guia útil sobre como criar um novo formulário.

Bloqueio de domínios

Agora é hora de adicionar nosso(s) snippet(s). Para obter ajuda sobre como e onde adicionar snippets, consulte este tutorial.

Campo de texto de parágrafo

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

Esse snippet examinará dentro do Texto do parágrafo para qualquer combinação das palavras mostradas dentro do campo de formulário preg_match e bloqueia o envio do formulário se for verdadeiro.

se o campo de comentário contiver qualquer tipo de nome de domínio, o formulário não será enviado

Campo de texto de linha única

Você também pode usar facilmente a mesma funcionalidade para o campo Texto de linha única. O snippet será quase idêntico, com exceção do nome do 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 );

E isso é tudo o que você precisa! Você também gostaria de bloquear qualquer profanação nesses campos? Confira nosso tutorial sobre Como bloquear envios de formulários que contenham palavrões.

Ações de referência

PERGUNTAS FREQUENTES

P: Posso usar isso no campo de formulário Rich Text?

R: Com certeza! Aqui está o snippet para o campo de formulário Rich Text.

/**
 * 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: Como posso aplicar isso a outros campos?

A: Quase todos os campos têm algum tipo de validação. A maioria dos campos usará do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ). Você apenas substituiria _{$field_type} com o tipo de campo.