Protéger formulaire

Petit nouveau ! | 8 Messages

02 sept. 2012, 00:14

Bonjour,
mon site (une base de données perso) est depuis peu pris d'assaut par des robots de spam.
Ils envoient régulièrement leurs messages publicitaires par l'intermédiaire d'un formulaire d'envoi actuellement non sécurisé.
J'aimerais le protéger sans avoir à utiliser un captcha ou un un système trop lourd à utiliser.
J'ai commencé à mettre en place un champ input caché par la .css et qui doit rester vide afin que le formulaire soit soumis. (j'ai déjà lu sur d'autres sites que cette méthode est moyenne mais j'ai envie d'essayer ;) )
<?php
$check = "";
if(isset($_POST["envoyer"]))
{
$check = $_POST['cap'];
//Si le champ est vide 
if(empty($check))
{echo 'ok';}
//Si le champ est rempli
else
{exit;}
}
Quand je teste, cela fonctionne saut le 'else'. Je ne sais pas quoi mettre à la place de 'exit;'. Le formulaire est tout de même envoyé...
Ce qu'il faudrait donc c'est empêcher l'envoi du formulaire si le champ 'cap' n'est pas vide.
Merci d'avance pour votre aide :D

Eléphant du PHP | 343 Messages

02 sept. 2012, 15:41

Et le traitement du formulaire où est-il (la partie qui envoie à la bdd)? C'est surtout où tu l'as mis le problème, je pense.
Développeur web

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 sept. 2012, 17:40

En fait, ce qu'il te faut, c'est mettre tout le code de traitement que tu utilises pour enregistrer les données dans le if() :
...
if (empty($check)) {
   // ... tout ton code ici
}
Du coup tu n'as même pas besoin du else. Tu pourrais l'utiliser pour mettre un message d'erreur ou d'avertissement, encore que logiquement, seuls des robots tomberont dessus... donc c'est pas forcément super utile.

Pour le coup du champ vide que seuls les robots voient et remplissent, ça n'est pas super efficace, car les plus performant arrive a détecter en remontant la "cascade" de style à savoir si le champ est visible ou pas, mais ça t'enlève déjà une partie du spam (j'avais appelé mon champ "url" et d'après les logs, ça leurs donnait particulièrement envie de le renseigner ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...