Empecher les meesages intempestifs sur mon livre d'Or

Mammouth du PHP | 19672 Messages

12 nov. 2007, 07:08

J'avoue que le coté technique de reproduire le formulaire m'échappe un peu.
"Affichage > Source de la page", tu connais ? ;)
les fonction javascript doivent-etre utilisé pour le confort de l'utilisateur il serait tres risqué de basé une protection sur du javascript.
Et surtout, le JavaScript étant coté client, il est accessible à tous les internautes, incluant bien entendu les spammeurs : ils peuvent donc l'analyser et trouver une manière de contourner les validations. Donc si tu ajoutes une validation JavaScript, c'est bien pour améliorer le confort d'utilisation pour l'internaute normal, mais ça ne te dispense pas de faire la même chose en PHP coté serveur : pour l'internaute normal, ça ira plus vite puisque les données arriveront déjà valides, mais pour le spammeur qui aura bidouillé les données, il sera intercepté.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 4039 Messages

12 nov. 2007, 11:35

Je dirais, pour être pédant, que le champ "4+4", c'est un peu banal, et qu'un robot pourrait facilement l'analyser et faire l'addition..

Je demanderais plutôt une question du genre "Quelle est la capitale de" (en évitant de demander celles de la Moldavie, d'Eritrea ou de Palau), plus compliqée.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

12 nov. 2007, 12:51

La couleur du cheval blanc d'Henri IV ?
L'age du capitaine à sa naissance ?
:roll:

Cyrano a donné une très bonne solution.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 4039 Messages

12 nov. 2007, 14:47

Autre méthode possible, je l'ai mise en place sur le LO de ma page perso et ça fonctionne particulièrement bien : là où tu as un textarea pour saisir le message à poster, utilise une ruse qu'aucun robot ne peut comprendre pour le moment : renomme ton textarea : name="spam" : ensuite, ajoute un autre textarea avec le nom original que tu as remplacé par spam mais ajoute lui un id et dans une feuille de style externe, ajoute sur ce second textarea "display: none".

Dans le traitement, vérifie s'il y a un contenu dans le textarea qui a un nom "en apparence normal" : si c'est le cas, tu vire, l'internaute normal ne voit pas ce champ et ne peut rien y inscrire, donc c'est un robot qui l'a rempli, le contenu normal devant se trouver dans le textarea "spam" (Ca, l'internaute ne le sait pas, et le robot ne mettra à priori rien dedans, ce qui fait que le message normal serait en plus vide donc sujet à rejet lors de la validation).

De cette manière, pas besoin de captcha et je n'ai plus eu à supprimer de spam depuis le mois de juillet dernier.
De fait, j'avais zappé, honte à moi.

Très chouette solution. =D>
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 558 Messages

13 nov. 2007, 00:25

ou alors quelque chose comme cela.
<table width="256">
      <tr>
        <td width="256"><div align="center"><span style="color: #000000"><span class="Style10">code de verifcation :<br>
combien font <br>
<?php 
$rand=rand(0,5);
$rand1=rand(0,5);
$codeverif1=$rand+$rand1;
$i=rand(0,25);
$alpha=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); 
$rand2=$alpha[$i];
$codeverif2="$codeverif1$rand2";
$codeverif=md5("$codeverif2");
echo"".$rand." plus ".$rand1." ajoutez lui la lettre ".$rand2." à la fin sans espace"; ?>

</span></span></div></td></tr><tr>
        <td width="256"><div align="center"><span style="color: #000000">
            <input name="codeverif" type="text" class="Style10" id="codeverif" size="15">
<input name="codeverif1" type="hidden" class="Style10" id="codeverif1" value="<?php echo"".$codeverif.""; ?>">
et en recuperation
<?php
$codeverif2 = htmlentities($_POST['codeverif']);
$codeverif = md5("$codeverif2");
$codeverif1 = htmlentities($_POST['codeverif1']);
if($codeverif != $codeverif1)
{
$reponse = "Le code de securité n'est pas correct";
echo"<SCRIPT LANGUAGE=\"JavaScript\">
document.location.href=\"connection.php\"</SCRIPT>";
exit();
} 
?>
quelque chose me dit que l'on peu encore amelioré se point mais je n'arrive pas a trouvé .

ViPHP
ViPHP | 4039 Messages

13 nov. 2007, 11:51

J'appliquerais vraiment la solution de Cyrano, hakazizi, elle me semble la plus mieux.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.