Come bloccare i domini dai vostri campi di testo

Siete interessati a migliorare la sicurezza dei vostri moduli web? Con un semplice snippet PHP, potete bloccare efficacemente gli invii da domini specifici direttamente nel campo di testo del vostro modulo. In questo tutorial vi guideremo passo dopo passo nell'implementazione di questa funzione, assicurandovi che i vostri moduli rimangano protetti da spam e invii dannosi.

Creazione del modulo

Inizieremo creando un nuovo modulo. Il nostro modulo è un semplice modulo di contatto in cui chiederemo ai clienti di lasciare il loro nome, l'e-mail e qualsiasi altro commento che desiderino aggiungere.

Per il nostro modulo di esempio, aggiungeremo i campi Nome, Email, Testo del paragrafo e Captcha personalizzato (per una maggiore sicurezza).

iniziare creando il modulo e aggiungendo i campi

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

Blocco dei domini

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

Campo di testo del 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 frammento guarderà all'interno della cartella Testo del paragrafo per qualsiasi combinazione delle parole mostrate all'interno del campo del modulo preg_match e bloccare l'invio del modulo se vero.

se il campo dei commenti contiene un qualsiasi tipo di nome di dominio, il modulo non viene inviato.

Campo di testo a riga singola

È possibile utilizzare la stessa funzionalità anche per il campo Testo a riga singola. Lo snippet sarà quasi identico, a 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 avete bisogno! Volete bloccare anche le bestemmie in questi campi? Consultate il nostro tutorial su Come bloccare gli invii di moduli contenenti parolacce.

Azioni di riferimento

FAQ

D: Posso utilizzarlo nel campo del modulo Rich Text?

R: Assolutamente sì! Ecco lo snippet per il campo del modulo 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 );

D: Come posso applicare questo metodo ad altri campi?

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