Vous souhaitez renforcer la sécurité de vos formulaires web ? Avec un simple extrait 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 pas à pas dans la mise en œuvre de cette fonctionnalité, afin 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. Il s'agit d'un simple formulaire de contact dans lequel nous demandons aux utilisateurs d'indiquer leur nom, leur adresse électronique et tout autre commentaire qu'ils souhaiteraient ajouter.
Pour notre formulaire d'exemple, nous ajouterons les champs Nom, Courriel, Texte du paragraphe et Captcha personnalisé (pour plus de sécurité).

Si vous avez besoin d'aide, veuillez consulter notre guide utile sur la création d'un nouveau formulaire.
Bloquer les domaines
Il est maintenant temps d'ajouter notre (nos) extrait(s). Si vous avez besoin d'aide pour savoir comment et où ajouter des snippets, veuillez consulter ce tutoriel.
Champ de texte du 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 );
Ce snippet examinera l'intérieur de la base de données Texte du paragraphe pour n'importe quelle combinaison des mots figurant à l'intérieur du champ de formulaire preg_match
et bloque la soumission du formulaire si c'est le cas.

Champ de texte à ligne unique
Vous pouvez tout aussi bien utiliser la même fonctionnalité pour le champ Single Line Text for. L'extrait 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 );
C'est tout ce dont vous avez besoin ! Vous souhaitez également bloquer les grossièretés dans ces champs ? Consultez notre tutoriel " Comment bloquer les soumissions de formulaires contenant des grossièretés".
Actions de référence
FAQ
Q : Puis-je l'utiliser dans un champ de texte enrichi ?
R : Absolument ! Voici l'extrait pour le champ du formulaire de 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 domaines ?
A : Presque tous les champs sont soumis à un certain type de validation. La plupart des champs utilisent do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data )
. Il suffit de remplacer _{$field_type}
avec le type de champ.