Ceci est un "hook" php afin d'ajouter un formulaire de contact en php sur des sites basiques. Il intègre quelques protections pour limiter le spam, sans passer par des captchas ou des ressources coûteuses en temps de calcul. Ça reste assez basique.
Find a file
2024-09-11 15:10:28 +02:00
form.php Initial release. Fonctionnel quand même. 2024-09-11 15:06:40 +02:00
form_config.php Initial release. Fonctionnel quand même. 2024-09-11 15:06:40 +02:00
form_lang.php Initial release. Fonctionnel quand même. 2024-09-11 15:06:40 +02:00
form_struct.php Initial release. Fonctionnel quand même. 2024-09-11 15:06:40 +02:00
LICENSE Initial commit 2024-09-11 12:39:37 +00:00
README.md Ajout de comment participer sur le readme. 2024-09-11 15:10:28 +02:00

Formulaire de contact en php avec mesures antispam (contactphpantibot)

Ceci est un "hook" php afin d'ajouter un formulaire de contact en php sur des sites basiques. Il intègre quelques protections pour limiter le spam, sans passer par des captchas ou des ressources coûteuses en temps de calcul. Ça reste assez basique.

Ouais, du php. Na.

J'ai découpé en plusieurs fichiers, sans doute que ça peut se condenser. Je ne suis pas dev, il est donc possible que ce soit très foireux. Toute aide pour améliorer est bienvenue.

Installation

Copiez les fichiers php là où vous voulez sur votre site. Vérifiez les chemins (je pourrais améliorer ça dans la config ; on verra à l'usage). Incluez "form.php" où vous voulez sur une de vos pages php :

Le script utilise la fonction mail de php, donc faut avoir php ET de quoi envoyer des mails sur votre serveur. Moi, j'utilise msmtp (https://alinea.ninm.net/dokuwiki/pratique:informatique:mail_relai ), c'est bien, simple et facile.

Configuration

Modifiez le fichier "form_config.php" pour adapter à vos propres paramètres. En particulier le mail...

Personnalisation et multilingue

Modifiez "form_lang.php" pour personnaliser les messages, voir ajouter des langues.

"form_struct.php" concerne le formulaire "presque" html. Ajoutez les classes de votre site web.

Non, je n'inclue pas de css, faut que ce soit cohérent avec les sites, donc : débrouillez-vous.

C'est aussi là qu'il y a la liste des questions parce que si c'est multilingue, c'est mieux de traduire vos questions, justement.

Mesures antispams

Honeypot

Il y a une case qui peut être cochée mais invisible (en principe) pour les êtres humains. Je ne sais pas trop si les lecteurs d'écran risquent de la voir donc j'ai ajouté une description.

Les bots les plus basiques vont soit tout cocher, soit rien. Or il faut laisser décoché la case "je suis un bot" et cocher "je suis un être humain" pour que l'envoi fonctionne.

Pas de liens

S'il y a un lien, ça va bloquer l'envoi. Parce que c'est rare qu'un premier contact légitime vous envoie un lien...

Mots-clés bloqués

Il y a une liste (basique) de mots-clés qui vont empecher l'envoi d'un mail. Ça demande à être complété. C'est très basique aussi bien sûr.

Question personnalisée

Ça reste assez redoutable pour pas mal de bots. Créez les votres, c'est comme ça que c'est le plus efficace.

Efficacité

Soyons honnête : ça va filtrer les plus basiques. Mais c'est déjà ça. On ne fera pas face aux IA avec ça, mais qui va brûler des tonnes d'énergie pour vous envoyer un message proposant des élargissements de péniches ? Oui, on sait, ils le feront… Mais en attendant d'avoir de meilleurs parades, ça limitera un petit peu le spam dans votre boîte.

Todo

Il faudrait ajouter

  • Une gestion des délais en associant le token csrf du formulaire avec un timestamp et refuser la requete si elle est faite trop rapidement
  • Une détection des ip faisant des erreurs afin de les bannir

Il faut aussi vérifier l'accessibilité. Ça semble acceptable "là", à voir quand on est inclus dans un site.

Et puis ajouter un menu déroulant avec options à choisir pour celles qui veulent trier un peu ("devis", "papote", "formation", etc). À inclure en première ligne du message.

Participer

Si vous souhaitez améliorer ce code, bienvenu !

Je ne suis PAS dev, alors : ne me demandez pas des trucs compliqués, et commentez abondamment ce que vous proposez. Je serais ravie d'améliorer ce code si on me pointe des améliorations possibles poliment.

Les règles sont très simples :

  • Soyez gentils et aimables, même face aux trucs très moches.
  • Commentez si vous proposez du code pour que je comprenne ce que ça fait.
  • Veillez aux failles en tout genre, ajoutez des tests.