Attenzione!

Questo articolo contiene codice PHP ed è destinato agli sviluppatori. Offriamo questo codice come cortesia, ma non forniamo supporto per personalizzazioni del codice o sviluppo di terze parti.

Per ulteriore assistenza, consulta il tutorial di WPBeginner su come aggiungere codice personalizzato.

Chiudi

Come bloccare domini dai tuoi campi di testo

Interessato a migliorare la sicurezza dei tuoi moduli web? Con un semplice snippet PHP, puoi bloccare efficacemente l'invio da domini specifici direttamente nel campo di testo del tuo modulo. In questo tutorial, ti guideremo attraverso il processo passo dopo passo per implementare questa funzionalità, assicurando che i tuoi moduli rimangano protetti da spam e invii dannosi.

Creazione del modulo

Inizieremo creando un nuovo modulo. Il nostro modulo è solo un semplice modulo di contatto in cui chiederemo loro di lasciare il proprio nome, email e qualsiasi commento aggiuntivo che desiderano aggiungere.

Per il nostro modulo di esempio, aggiungeremo i campi modulo Nome, Email, Testo Paragrafo e Captcha Personalizzato (per sicurezza aggiuntiva).

inizia creando il tuo modulo e aggiungendo i tuoi campi

Se hai bisogno di assistenza, consulta la nostra utile guida su come creare un nuovo modulo.

Blocco dei domini

Ora è il momento di aggiungere i nostri snippet. Per qualsiasi assistenza su come e dove aggiungere snippet, ti preghiamo di consultare questo tutorial.

Campo di testo Paragrafo

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

Questo snippet analizzerà il campo modulo Testo Paragrafo per qualsiasi combinazione delle parole mostrate all'interno di preg_match e bloccherà l'invio del modulo se vero.

se il campo commenti contenesse qualsiasi tipo di nome di dominio, il modulo non verrà inviato

Campo di testo a riga singola

Puoi usare con la stessa facilità la stessa funzionalità anche per il campo Testo a riga singola. Lo snippet sarà quasi identico, ad eccezione del nome 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 );

E questo è tutto ciò di cui hai bisogno! Vuoi anche bloccare parolacce in questi campi? Dai un'occhiata al nostro tutorial su Come bloccare gli invii di moduli contenenti parolacce.

Azioni di riferimento

FAQ

D: Posso usarlo sul campo modulo Testo Arricchito?

R: Assolutamente! Ecco lo snippet per il campo modulo Testo Arricchito.

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

D: Come posso applicarlo ad altri campi?

R: Quasi tutti i campi hanno un qualche tipo di validazione. La maggior parte dei campi utilizzerà do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ). Dovrai semplicemente sostituire _{$field_type} con il tipo di campo.