|
gaga26 |
Posté le 26/06/2007 12:25
- #
|


741 messages
18 ans |
Bonjour,
Je ne sais pas si vous l'avez remarqué, mais cela arrive de plus en plus qu'il y ai des messages indésirables sur le livre d'or (généralement de la pub avec des liens). Je dois venir tous les jours faire le gendarme et supprimer ces messages.
Est-ce quelqu'un aurait une solution pour éradiquer de façon automatique ces spams ?
Merci d'avance
Gaga26
|
mr.aide |
Posté le 26/06/2007 16:42
- #
|

Membre
33 messages
2008 ans |
Salut,
tu peut mettre une image anti-bot
Si ce sont des invités humains tu enregistre leurs IPs dans une table, tu les relis avec les messages spam, si c'est du spam tu clique sur un lien qui leur empechent de poster sur le livre d'or
C'est juste des idées qui me passent par la tête
|
gaga26 |
Posté le 26/06/2007 19:36
- #
|


741 messages
18 ans |
Mettre une image anti-bots sur le livre d'or me paraît exagéré... Quand à l'ip, elle change constamment.
|
mr.aide |
Posté le 27/06/2007 08:51
- #
|

Membre
33 messages
2008 ans |
Sinon en entrant dans le bdd tu fait une regex, si il y a des <a href= le message ne s'enregistre pas
Ou si il y a des urls t'enregistre pas non plus
|
gaga26 |
Posté le 27/06/2007 16:42
- #
|


741 messages
18 ans |
Citation : mr.aide Sinon en entrant dans le bdd tu fait une regex, si il y a des <a href= le message ne s'enregistre pas
Ou si il y a des urls t'enregistre pas non plus
J'avais pensé à cette solution, mais cela me paraissait un peu ... radical, je me demandais si il n'y avait pas une autre possibilité.
|
gaga26 |
Posté le 27/06/2007 16:51
- #
|


741 messages
18 ans |
Voilà, on ne peut plus poster d'url sur le livre d'or, on verra si cela suffit.
|
vistuo |
Posté le 29/06/2007 12:22
- #
|

Membre
22 messages
16 ans |
sinon avec une regex tu cherche des groupes de mots du genre : voir mon site, venez sur mon site, et tu dis "votre message a bien été sauvegardé" comme ca l'autre est tout content car il pense que son message a été mis, mais tu l'enregsitre pas !
Bien sur on sent rend compte vite fait !
|
DylanCollaud |
Posté le 05/07/2007 19:29
- #
|
Membre
7 messages
15 ans |
Pas bête l'idée mais après il va dire que c'est un bug du site
Faudrai mettre "Pas de Publicités sur mon site !"
|
Jashugal |
Posté le 21/07/2007 21:27
- #
|
Membre
23 messages
17 ans |
Tu peux tout simplement mettre une limite de temps entre deux messages...
Une limite conséquente: nous ne sommes pas censés poster un message sur le livre d'or toutes les 2minutes, on signe une fois..
|
gaga26 |
Posté le 21/07/2007 22:41
- #
|


741 messages
18 ans |
Citation : Jashugal Tu peux tout simplement mettre une limite de temps entre deux messages...
Une limite conséquente: nous ne sommes pas censés poster un message sur le livre d'or toutes les 2minutes, on signe une fois..
Ok, mais comment savoir si l'utilisateur est le même ?
|
Jashugal |
Posté le 21/07/2007 22:55
- #
|
Membre
23 messages
17 ans |
Ben, j'ai pas encore trouver la parade, mais en utilisant bien tous les systèmes (sessions, cookies, ip) il ne devrait pas y avoir de problème.
Sinon, seulement pour les membres, mais c'est vrai que c'est quand même mieux de pouvoir laisser un message sans s'inscrire.
Je n'ai pas encore fais attention à l'effet des sessions, elle s'efface si on quitte la page? Jamais vraiment fais gaffe..
|
gaga26 |
Posté le 21/07/2007 23:00
- #
|


741 messages
18 ans |
Cookies => soit désactivé soit on les vides
IP => ip dynamique donc c'est facile de la changer
Session => la session_id est enregistré dans les cookies
|
Jashugal |
Posté le 21/07/2007 23:28
- #
|
Membre
23 messages
17 ans |
Tu n'as pas vraiment répondu à ma question..
Genre créer un fichier .php avec comme nom l'id d'une session, ça donne une 4e méthode, et toutes compilées.. ça pourrait peut-être donner quelque chose.
Sinon, ben, détecter un eventuel proxy, ou chercher à en savoir un peu plus sur les IP et les fonctions php pouvant les tracer. J'irais faire un tour quand je me serais intéressé sur le sujet
|
Noix de Coco |
Posté le 22/07/2007 21:34
- #
|

Membre
36 messages
16 ans |
Moi j'ai la solution ^^ elle est un peu barabare (pour pas dire trop), mais cela foncitonne parfaitement.
A 90% du temps, les messages indésirables comme ceux que tu cites proviennent des robots automatiques lancés par les sites web concernés, qui veulent se faire un peu de pub (sur un de mes sites j'ai 50 messages comme ceux-là par jour...). Donc voilà ma solution.
Je vais vous l'expliquer par étape, elle n'est pas compliquée, mais elle est longue (ou du moins pour ce que c'est !).
Prenons l'exemple d'un formulaire de contact (qui utilise mail()).
Le code (démarche plus bas)
Nous allons créer un fichier "securite/contact.securite" sous cette arborescence :
/racine
|- index.php /* Pour le fun */
|- contact.php /* La page étudiée */
|- securite/contact.securite
Ce fichier va contenir un nombre, vous verrez plus tard à quoi il va servir précisément.
Nous allons maintenant créer deux fonctions, une pour écrire ce fameux nombre dans le fichier, et une autre pour le lire. Créez le fichier "fonctions/securite.php". Vous devriez avoir ceci :
/racine
|- index.php
|- contact.php
|- securite/contact.securite
|- fonctions/securite.php
Attaquons dès lors cette dernière page créée, voici les deux fonctions :
<?php
/* Fonction pour insérer le résultat du calcul de sécurité dans un fichier */
function securiteInsere ($nombre1, $nombre2, $fichier)
{
/* On ouvre le fichier */
$fichierOuvert = fopen($fichier, 'w+');
/* On définitle contenu à insérer */
$contenu = ($nombre1 + $nombre2);
/* On remet le curseur au début du fichier */
fseek($fichierOuvert, 0);
/* On écrit le contenu dans le fichier */
fwrite($fichierOuvert, $contenu);
/* On ferme le fichier */
fclose($fichierOuvert);
}
/* Fonction pour l'extraire */
function securiteLire ($fichier)
{
/* On l'extrait */
$resultat = file_get_contents($fichier);
/* Puis on le retourne */
return $resultat;
}
?>
Voici le formulaire de contact :
<?php
/* Code à ajouter avant le formulaire */
/* On définit les nombres pour la sécurité */
$nombre1 = rand(1, 4);
$nombre2 = rand(1, 4);
securiteInsere ($nombre1, $nombre2, $fichier);
?>
<!-- Ligne à ajouter -->
<label>Combien font <?php print $nombre1; ?> + <?php print $nombre2; ?> ? : <input type="text" name="securite" id="securite" size="30" /></label>
Les robots ne pourront ainsi remplir cette zone de saisie, car les nombres dans la question apparaissent comme des caractères normaux.
Passons à la page de contact, voici quelques petits procédés à ne pas oublier pour que tout fonctionne :
<?php
$fichier = 'securite/contact.securite'; /* On définit le fichier de sécurité (pour les fonctions) */
include 'fonctions/securite.php'; /* On inclut les fonctions */
srand(); /* Fonction pour pouvoir générer des nombres aléatoires */
?>
Ensuite, après avoir récupérer les données du formulaire :
<?php
/* Si on reçoit les données du formulaire */
...
...
$securite = htmlentities($_POST['securite']);
/* Si le résultat est bon */
if ($securite == securiteLire ($fichier))
{
/* On modifie le résultat de la sécurité au cas où le visiteur actualiserai */
$nombre1 = rand(1, 4);
$nombre2 = rand(1, 4);
/* Si le résultat des deux nombre est le même que le précédent */
if (($nombre1 + $nombre2) == securiteLire ($fichier))
{
/* On rédéfinit les nombres */
$nombre1 = rand(1, 4);
$nombre2 = rand(1, 4);
}
/* On insère ensuite le résultat dans le fichier */
securiteInsere ($nombre1, $nombre2, $fichier);
/* Suite du code */
...
...
}
else /* Sinon */
{
/* C'est que le visiteur a actualisé (ou qu'il est con), on n'ajoute pas le commentaire et on affiche un message d'erreur */
print '<p class="erreur">La réponse au calcul de sécurité est incorrecte.</p>';
}?>
La démarche
On définit 2 nombres aléatoires et l'on stocke leur somme dans un fichier.
On demande combien font la somme de ses 2 nombres au visiteurs, si c'est un robot, il ne pourra pas remplir le formulaire complètement, et donc le message ne passera pas.
On vérifie si le résultat entré par le visiteur est bien le même que celui dans le fichier.
Si tel est le cas, on modifie le résultat du fichier. Ainsi, si le visiteur actualise, il concervera sa réponse, qui ne sera plus correcte.
J'ai pensé au fichier car son contenu ne change pas à l'actualisation, contrairement aux variables.
De plus vous avez une double sécurité : une contre les robots, et une contre l'actualisation accidentelle (ou volontaires !) des visiteurs. Edité par Noix de Coco le 22/07/2007 21:38
|
Warshadow |
Posté le 25/07/2007 01:32
- #
|

Membre
54 messages
20 ans |
J'ai jamais testé, mais il parait qu'en mettant un bouton en javascript plutôt qu'en HTML pour envoyer le message, ca bloque les robots. Après, j'ai jamais vérifié si ca marchait, je sais même pas comment on met un bouton en javascript... xD
|
gaga26 |
Posté le 25/07/2007 11:24
- #
|


741 messages
18 ans |
Le problème c'est que tout le monde n'a pas javascript.
|
JonathanMM |
Posté le 02/08/2007 19:35
- #
|

Membre
33 messages
17 ans |
Moi, sur mon site j'ai mis un truc RADICAL :
Citation Quel est la première et la dernière lettre du mot "diplôme" ?
Depuis ce jour, j'ai plus de spam
|
robocop |
Posté le 25/11/2007 15:20
- #
|
Membre
23 messages
|
Y'a un autre truc qui consiste à créer un champs caché.
Le robot va forcément le le compléter.
Et tu enregistres que si ce champs n'est pas remplit .
|
Ze Thriller |
Posté le 25/11/2007 17:33
- #
|

Membre
105 messages
24 ans |
Gaga, j'ai "croisé" sur un site fait avec Spip une mini bannière de "SpamPoison". Ca peut peut-être t'intéresser
|
gaga26 |
Posté le 25/11/2007 20:58
- #
|


741 messages
18 ans |
Citation : Ze Thriller Gaga, j'ai "croisé" sur un site fait avec Spip une mini bannière de "SpamPoison". Ca peut peut-être t'intéresser
Pas tout compris...
|
|