J’utilise toujours Contact Form 7 régulièrement dans mes projets de sites web avec wordpress, et il m’arrive de tomber sur des cas particuliers qui peuvent poser problèmes.
J’avais déjà évoqué un soucis d’expedition de mail avec Cpanel mais en fait ce genre de soucis est indépendant à CF7 ou même wordpress, il pourrait arriver à n’importe qui, et l’histoire relaté est surtout là pour montrer qu’il faut parfois lever les yeux du code et chercher la cause ailleurs.
Comme diraient certains : « la vérité est ailleurs » …
Quoiqu’il en soit lorsque vous utilisez un plugin wordpress, vous pourrez rencontrer un problème qui n’est pas de la faute de son auteur.
Son utilisation conjointe avec un autre plugin, peut déclencher des problèmes difficiles à solutionner hors de ce contexte particulier.
Voici donc l’histoire d’un autre problème qui touche vraiment Contact Form 7, mais qui ne se rencontre pas dans toutes les situations, ce soucis est donc plutôt vicieux puisqu’il est pas évident à cerner.
Imaginez le constat,
on vous rapporte que des visiteurs ne peuvent pas utiliser le formulaire de contact laissé à disposition, au moment de soumettre leur message, un message encadré en rouge ou en orange leur proposant un message d’erreur.
Apres plusieurs tests de votre coté, vous n’avez aucun problème pour envoyer des messages du formulaire de contact.
Par défaut, si vous n’avez pas trop personnalisé l’intégration du formulaire, l’erreur encadré Orange de CF7 signifie que le message à été considéré comme un spam donc CF7 refuse d’aller plus loin.
Le spam et les mails du formulaires de contact …
Nous sommes sur une piste …
Entre CF7 et les techiques de spam …
Je l’annonce tout de suite :
Vous pourrez chercher, ce n’est pas la faute à un de vos quelconques plugins wordpress antispam ( comme Akismet par exemple ) qui aurait pu être en cause.
Encore que …
avant d’aller plus loin il peut-être utile de verifier que vous n’avez pas un mot ou une ip Blacklisté dans l’administration de WordPress : « Réglage -> Discussion ».
Attention n’oubliez pas que la modération reconnais des morceaux de mots.
Par exemple indiquer « cul » pourrait interdire le mot « culinaire » …
Ce problème ci, en particulier, n’apparait en fait que depuis quelques temps, car il s’agit d’un problème qui est apparu avec la mise à jour 3.1 de l’extension CF7.
Les concepteurs de l’extension on pensés bien faire en implémentant une nouvelle fonctionnalité faisant partie — à priori — des bonnes pratiques de programmation.
En effet, peu importe où vous insérez le formulaire de contact, une partie des robots et autres crawlers ne visiterons jamais cette page, mais tenterons de poster directement les données dans votre site wordpress, sans jamais passer sur la page de votre formulaire.
J’en reste là pour la vulgarisation, mais les lecteurs plus aguerris reconnaitrons ici le même principe que les attaques de type XSRF — Cross-Site Request Forgery.
Suite à la mise à jour 3.1 de l’extension, CF7 à la bonne idée d’utiliser les nonces de WordPress.
Des jetons de validité dans les formulaires : faire en sorte qu’un formulaire posté ne soit accepté que s’il a été produit quelques minutes auparavant : le jeton de validité en sera la preuve.
Le jeton de validité doit donc être transmis en paramètre et vérifié côté serveur.
Si celui ci n’est pas valide l’ensemble du formulaire sera refusé.
Si le nonce à été généré il y’a trop longtemps, l’ensemble sera également invalide.
Le problème entre Contact Form 7 et les plugins de caches …
Peut-être que vous voyez probablement déjà où je veux en venir … ?
Si vous utilisez un système de cache un peu trop agressif, vous allez forcement avoir un nonce trop ancien, donc non-valide, donc l’extension Contact Form 7 pensera que l’envoi du formulaire n’est pas légitime.
Dans ce cas, plusieurs solution plus ou moins rapide à mettre en place se présente à vous :
Premièrement, désactiver votre système de cache.
Radical et efficace, cela résoud d’office notre problème.
Mais ce n’est pas forcement la meilleure solution, même si vous n’avez pas une grosse charge, on perd forcement en efficience, et demander au serveur de recalculer tout le temps les memes pages pour avoir toujours le même résultat, ce n’est pas très cool énergetique-ment parlant.
Seconde solution moins extreme;
Etre moins agressif sur le cache en limitant la durée du ou des cache(s).
Le fait d’invalider votre cache plus régulièrement fera travailler un peu plus votre machine mais allégera quand même la charge de travail.
Pour Contact Form 7 les nonces seront valides 24h, donc votre cache devra avoir une durée de vie maximum de 24h.
Solution N+1 :
On arrive au point où l’on souhaite garder une durée de cache plus importante mais quand même bénéficier de l’extension à son maximum.
Cela necessitera d’aller scruter la configuration de votre extension de cache, afin de permettre d’exclure certaines partie du site afin qu’elle ne rentre pas dans le cache.
Bonjour David, je te contacte car tu as l’air d’être un expert de Contact form 7 (entre autres).
Je suis tombée sur ton site en essayant de résoudre des problèmes avec Contact Form 7 sur le site que je suis en train de créer.
Ca me met un message d’erreur rouge pour le formulaire d’inscription à la newsletter ainsi que le formulaire de contact disant « Une erreur s’est produite lors de l’envoi de votre message. Veuillez essayer à nouveau plus tard. »
Et pourtant je reçois bien les mails. Saurais-tu pourquoi et comment y remédier svp ?
A l’inverse, quand je remplis le formulaire de contact et qu’il y a des champs obligatoires non remplis, il n’y a aucun message d’erreur qui s’affiche. Le formulaire ne s’envoie pas, mais rien n’est mentionné.
Franchement, si tu prends le temps de me répondre ce serait génial.
Merci :-)
Salut Mélanie, prendre le temps de faire une réponse oui c’est souvent génial, mais pas forcement salutaire.
Là ici difficile de te donner *UNE* solution sans devoir aller investiguer directement sur ton projet.
A froid, quelques pistes à envisager :
si le comportement est inversé, il ya peut-être dans le code une condition inversé ? ou alors peut-être que directement dans l’admin de CF7 ton formulaire est mal réglé.
Cela peut aussi venir d’un bug temporaire de CF7 qui comme on l’as vu peut contenir quelques bizarreries jusqu’à la prochaine mise à jour de l’extension.
Cela peut-aussi venir d’un conflit avec d’autres composants installé sur le CMS, que ce soit dans une autre extension, dans ton theme, ou un mu-plugin …
Bonjour, merci beaucoup pour votre article ! Juste une petite question,
Comment modifier la couleur des encadrés ?
Merci
Salut Justine,
la question est ambiguë, car il ya deux moyens pour changer la couleurs de ces encadrés :
– premierement, en changeant de statut ! Si il n’ya plus d’erreurs à la saisie et que CF7 ne considère pas le message comme du spam, le message ne sera pas le même et l’encadré sera en vert.
Cette réponse te paraitra peut-être ironique, mais comme j’ai réellement déjà eu cette question, au cas où j’y répond ( pour toi ou d’autres lecteurs qui passerais par là )
– l’autre solution c’est de venir surcharger les classes CSS dans ton theme, en définissant ton propre code couleur. Apres rien ne te limite à la simple couleur de la bordure, tu peux ajouter une couleur de fond ou une ombre porté, pour coller au mieux à ta charte graphique.
Bonjour David,
Je viens également de recevoir le même message d’erreur orange sur le site d’un client. Un élément qui a posé problème était le recaptcha qui ne validait plus rien. En le retirant, le mail passe sans problèmes. J’ai donc réinitialisé la clé captcha et tout a remarché parfaitement :)
Si jamais certains ont ce problèmes, allez dans CF7 et supprimer la ligne [cf7sr-simple-recaptcha] de votre formulaire. Testez votre formulaire et si le message passe c’est que recaptcha a bloqué l’envoi par non-validation.
En espérant que ça aide certains !
Bon courage !
Bonjour,
Ma configuration WP actuelle :
– Version de WordPress : 5.4
– Version de PHP/MySQL : 7.4.4 / 5.5.5
– Thème utilisé : Divi
– Thème URI : http://www.elegantthemes.com/gallery/divi/
– Extensions en place : Check Email (0.5.7), Contact Form 7 (5.1.7), Contact Form 7 Extension For Mailchimp (0.5.17), Flamingo (2.1.1), Forum_wordpress_fr (4.2), Material Design for Contact Form 7 (2.6.1), UpdraftPlus – Backup/Restore (1.16.23)
– Adresse du site : http://localhost/lfdt
– Nom de l’hébergeur : Apache/2.4.43 (Win64) OpenSSL/1.1.1f PHP/7.4.4
Mon problème : J’ai un message d’erreur en rouge « Une erreur s’est produite lors de l’envoi de votre message. Veuillez essayer à nouveau plus tard. »
J’aurais aimé vous mettre les copies d’écran de l’onglet formulaire et email de Contact Form 7 mais pas possible.
Pouvez-vous m’aider, je tourne en rond.
Merci par avance.
Patricia
Bonjour,
Le texte à l’intérieur des encadrés est en blanc, les encadrés ont la bonne couleur mais les textes sont tous blancs. Où corriger cela? Merci d’avance pour votre aide