Achtung!

Dieser Artikel enthält PHP-Code und richtet sich an Entwickler. Wir stellen diesen Code als Service zur Verfügung, bieten jedoch keine Unterstützung für Codeanpassungen oder die Entwicklung durch Dritte.

Für zusätzliche Hilfe siehe das Tutorial von WPBeginner zum Hinzufügen von benutzerdefiniertem Code.

Schließen

So blockieren Sie Domains aus Ihren Textfeldern

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

Erstellung des Formulars

Wir beginnen mit der Erstellung eines neuen Formulars. Unser Formular ist nur ein einfaches Kontaktformular, in dem wir die Benutzer nach ihrem Namen, ihrer E-Mail-Adresse und weiteren Kommentaren fragen, die sie hinzufügen möchten.

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

Beginnen Sie mit der Erstellung Ihres Formulars und dem Hinzufügen Ihrer Felder

Wenn Sie Hilfe benötigen, sehen Sie sich bitte unseren hilfreichen Leitfaden zur Erstellung eines neuen Formulars an.

Domains blockieren

Nun ist es an der Zeit, unsere Snippets hinzuzufügen. Informationen zur Funktionsweise und zum Speicherort von Snippets finden Sie in diesem Tutorial.

Absatztextfeld

/**
 * 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 durchsucht das Formularfeld Absatztext nach einer Kombination der im preg_match angezeigten Wörter und blockiert die Formularübermittlung, wenn eine Übereinstimmung gefunden wird.

Wenn das Kommentarfeld einen Domainnamen enthalten würde, würde das Formular nicht übermittelt werden

Einzeiliges Textfeld

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

/**
 * 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 anstößige Wörter in diesen Feldern blockieren? Sehen Sie sich unser Tutorial So blockieren Sie Formularübermittlungen mit anstößigen Wörtern an.

Referenzaktionen

FAQ

F: Kann ich dies im Rich-Text-Formularfeld verwenden?

A: Absolut! 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 Felder anwenden?

A: Fast jedes Feld verfügt über eine Art von Validierung. Die meisten Felder verwenden do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ). Sie würden nur _{$field_type} durch den Feldtyp ersetzen.