Attention !

Cet article contient du code PHP et est destiné aux développeurs. Nous fournissons ce code à titre de courtoisie, mais nous n'offrons pas de support pour les personnalisations de code ou le développement tiers.

Pour obtenir de l'aide supplémentaire, veuillez consulter le tutoriel de WPBeginner sur l'ajout de code personnalisé.

Ignorer

Comment bloquer des domaines à partir de vos champs de texte

Vous souhaitez renforcer la sécurité de vos formulaires web ? Avec un simple extrait de code PHP, vous pouvez bloquer efficacement les soumissions provenant de domaines spécifiques directement dans le champ de texte de votre formulaire. Dans ce tutoriel, nous vous guiderons étape par étape dans la mise en œuvre de cette fonctionnalité, en veillant à ce que vos formulaires restent protégés contre le spam et les soumissions malveillantes.

Création du formulaire

Nous commencerons par créer un nouveau formulaire. Notre formulaire est simplement un formulaire de contact où nous leur demanderons leur nom, leur e-mail et tout commentaire supplémentaire qu'ils souhaiteraient ajouter.

Pour notre exemple de formulaire, nous ajouterons les champs de formulaire Nom, E-mail, Texte de paragraphe et Captcha personnalisé (pour une sécurité supplémentaire).

commencez par créer votre formulaire et ajouter vos champs

Si vous avez besoin d'aide, veuillez consulter notre guide utile sur la création d'un nouveau formulaire.

Blocage des domaines

Il est maintenant temps d'ajouter notre/nos extrait(s) de code. Pour toute aide sur comment et où ajouter des extraits de code, veuillez consulter ce tutoriel.

Champ de texte de paragraphe

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

Cet extrait de code recherchera dans le champ de formulaire Texte de paragraphe toute combinaison des mots indiqués dans preg_match et bloquera la soumission du formulaire si elle est vraie.

si le champ de commentaire contenait un nom de domaine, le formulaire ne serait pas soumis

Champ de texte d'une seule ligne

Vous pouvez tout aussi facilement utiliser la même fonctionnalité pour le champ Texte d'une seule ligne. L'extrait de code sera presque identique, à l'exception du nom du filtre.

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

Et c'est tout ce dont vous avez besoin ! Souhaitez-vous également bloquer toute grossièreté dans ces champs ? Consultez notre tutoriel sur Comment bloquer les soumissions de formulaire contenant des grossièretés.

Actions de référence

FAQ

Q : Puis-je utiliser cela sur le champ de formulaire Texte enrichi ?

R : Absolument ! Voici l'extrait de code pour le champ de formulaire Texte enrichi.

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

Q : Comment puis-je appliquer cela à d'autres champs ?

R : Presque tous les champs ont un type de validation. La plupart des champs utiliseront do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ). Vous remplaceriez simplement _{$field_type} par le type de champ.