Wie Sie Domains aus Ihren Textfeldern blockieren

Möchten Sie die Sicherheit Ihrer Webformulare erhöhen? Mit einem einfachen PHP-Snippet können Sie Übermittlungen von bestimmten Domains direkt im Textfeld Ihres Formulars blockieren. In diesem Tutorial führen wir Sie Schritt für Schritt durch die Implementierung dieser Funktion und stellen sicher, dass Ihre Formulare vor Spam und bösartigen Eingaben geschützt bleiben.

Erstellen des Formulars

Wir beginnen mit der Erstellung eines neuen Formulars. Unser Formular ist nur ein einfaches Kontaktformular, in dem wir sie bitten, ihren Namen, ihre E-Mail-Adresse und eventuelle zusätzliche Kommentare anzugeben.

Für unser Beispielformular fügen wir die Formularfelder Name, E-Mail, Absatztext und das benutzerdefinierte Captcha (für zusätzliche Sicherheit) hinzu.

beginnen Sie mit der Erstellung Ihres Formulars und fügen Sie Ihre Felder hinzu

Wenn Sie Hilfe benötigen, lesen Sie bitte unseren Leitfaden zur Erstellung eines neuen Formulars.

Blockierung der Domänen

Jetzt ist es an der Zeit, unser(e) Snippet(s) hinzuzufügen. Wenn Sie wissen möchten, wie und wo Sie Snippets hinzufügen können, lesen Sie bitte diese Anleitung.

Absatz Textfeld

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

Dieses Snippet schaut in die Absatz Text Formularfeld für eine beliebige Kombination von Wörtern aus dem Feld preg_match und blockieren die Übermittlung des Formulars, wenn dies der Fall ist.

wenn das Kommentarfeld einen beliebigen Domänennamen enthält, wird das Formular nicht übermittelt

Einzeiliges Textfeld

Sie können die gleiche Funktionalität auch für das Feld Einzeiliger Text für verwenden. Das Snippet wird mit Ausnahme des Filternamens fast identisch sein.

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

Und das ist alles, was Sie brauchen! Möchten Sie auch alle Schimpfwörter in diesen Feldern blockieren? Sehen Sie sich unsere Anleitung zum Blockieren von Formularübermittlungen an, die Schimpfwörter enthalten.

Referenz-Aktionen

FAQ

F: Kann ich dies für ein Rich-Text-Formularfeld verwenden?

A: Auf jeden Fall! Hier ist das Snippet für das Rich Text Formularfeld.

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

F: Wie kann ich dies auf andere Bereiche anwenden?

A: Fast jedes Feld hat irgendeine Art von Überprüfungsfunktion. Die meisten Felder verwenden do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ). Sie würden einfach ersetzen _{$field_type} mit dem Feldtyp.