Atenção!

Este artigo contém código PHP e destina-se a programadores. Oferecemos este código como cortesia, mas não prestamos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação adicional, consulte o tutorial da WPBeginner sobre como adicionar código personalizado.

Ignorar

Como Bloquear Domínios dos Seus Campos de Texto

Interessado em melhorar a segurança dos seus formulários web? Com um simples trecho de PHP, pode efetivamente bloquear submissões de domínios específicos diretamente no campo de texto do seu formulário. Neste tutorial, vamos guiá-lo através do processo passo a passo de implementação desta funcionalidade, garantindo que os seus formulários permaneçam protegidos contra spam e submissões maliciosas.

Criação do formulário

Começaremos por criar um novo formulário. O nosso formulário é apenas um simples formulário de contacto onde lhes pediremos o nome, email e quaisquer comentários adicionais que desejem adicionar.

Para o nosso formulário de exemplo, adicionaremos os campos de formulário Nome, Email, Texto de Parágrafo e o Captcha Personalizado (para segurança adicional).

comece por criar o seu formulário e adicionar os seus campos

Se precisar de alguma assistência, por favor consulte o nosso guia útil sobre como criar um novo formulário.

Bloquear os domínios

Agora é hora de adicionar o(s) nosso(s) trecho(s). Para qualquer assistência sobre como e onde adicionar trechos, por favor reveja 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 );

Este trecho irá procurar no campo de formulário Texto de Parágrafo qualquer combinação das palavras mostradas dentro do preg_match e bloqueará a submissão do formulário se for verdadeiro.

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

Campo de Texto de Linha Única

Pode usar a mesma funcionalidade para o campo Texto de Linha Única com a mesma facilidade. O trecho será quase idêntico com a 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 é tudo o que precisa! Gostaria também de bloquear qualquer profanidade nestes campos? Consulte o nosso tutorial sobre Como Bloquear Submissões de Formulários Contendo Profanidade.

Ações de Referência

FAQ

P: Posso usar isto no campo de formulário de Texto Rico?

R: Absolutamente! Aqui está o trecho para o campo de formulário Texto Rico.

/**
 * 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 isto a outros campos?

R: 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 ). Basta substituir _{$field_type} pelo tipo de campo.