Comment faire ca ?

Comment faire ca ? - PHP - Programmation

Marsh Posté le 13-01-2005 à 18:57:59    

J'ai crée un livre d'or en php, son principe est simple: les signatures sont stockés dans la data base mysql et sont affichés sur une page.
J'aimerais savoir comment, de préférence en utilisant l'IP du posteur, faire un anti-flood, c'est à dire par exemple interdit plus d'un message par heure.
Merci d'avance :)

Reply

Marsh Posté le 13-01-2005 à 18:57:59   

Reply

Marsh Posté le 13-01-2005 à 19:09:50    

Salut,
 
Un exemple rapide (syntaxe à vérifier et à adapter):
 

Code :
  1. $mysql->query('SELECT date_signature
  2.   FROM table_signatures
  3.   WHERE utilisateur = $_SERVER['REMOTE_ADDR']');
  4. while ($table_signatures = mysql_fetch_array(...))
  5. {
  6. if ($table_signatures['date_signature'] >= (time() - 3600))
  7. {
  8.  echo 'Patientez SVP !';
  9. }
  10. }

Reply

Marsh Posté le 13-01-2005 à 19:11:45    

Trefledepique_W a écrit :

les signatures sont stockées dans la data base mysql et sont affichées sur une page.
Merci d'avance :)


[:moundir]
 
Le principe est tout aussi simple : pour chaque soumission sur ton livre d'or, tu stockes l'IP du client dans ta DB. Et avant d'accepter le commentaire, tu vérifies que l'IP n'a pas été utilisée il y a x secondes.
 
L'IP peut être simplement stockée comme champs avec le reste des infos (commentaire, date), mais tu te heurtes à un problème de perf si la table grossit, car chaque recherche de l'IP deviendra relativement coûteuse.
 
Cette remarque m'apparaît plutôt théorique, car j'imagine que tu ne t'attends pas à des volumes gigantesques.
 
Pour être complet, disons que l'IP devrait être stockée dans une table à part, et purgée à intervalle régulier des entrées obsolètes (le nec plus ultra).
 
DE TOUTE FACON, ce n'est pas la bonne façon de procéder, ha! L'IP n'est pas un identifiant fiable pour un client. La relation entre une IP et un client est du type m-n !!!
 
En effet :
 
- Une IP peut être utilisée par plusieurs personnes. Pense simplement à un réseau d'entreprise, où pas mal de monde utilisera le même proxy. Si Machin entre qq chose dans ton livre et propose à son collègue Bidule de visiter ton merveilleux site, et que celui-ci veut également laisser un commentaire, il ne pourra pas le faire !
 
- Tu bloqueras le flooder casuel, mais il est relativement aisé de se présenter avec une IP différente à chaque requête (bien entendu, on ne reçoit pas la réponse) : IP spoofing.
 
[:crusty128]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 13-01-2005 à 19:13:21    

Trefledepique_W a écrit :

J'ai crée un livre d'or en php, son principe est simple: les signatures sont stockés dans la data base mysql et sont affichés sur une page.
J'aimerais savoir comment, de préférence en utilisant l'IP du posteur, faire un anti-flood, c'est à dire par exemple interdit plus d'un message par heure.
Merci d'avance :)


 
Ben :
 
1) Tu rajoutes des champ pour la date + l'heure + IP dans ta table de messages.
2) Avant d'enregistrer un message, tu vérifies que l'intervalle de temps entre le nouveau message et un éventuel ancien message posté par l'IP en cours est supérieur à une heure.
 
PS : Attention, l'interdiction en fonction de l'IP peut pénaliser des personnes travaillant dans des grandes boites et passant par un proxy. Si deux de tes amis travaillent ainsi au même endroit et que l'un des deux flood, l'autre ne pourra plus posté.  
 
Généralement, quand qqu veut vraiment flooder un livre d'or, il y arrive toujours, car un livre d'or par définition ne nécessite pas d'authentification à l'inverse d'un forum comme celui-ci.

Reply

Marsh Posté le 13-01-2005 à 19:13:52    

Bon, ben grillé... [:petrus75]

Reply

Marsh Posté le 13-01-2005 à 19:20:20    

La seule solution tout à fait anti-flood, c'est le contrôle avant publication.
 
Ca permet aussi de filtrer les posts injurieux, racistes ou autres, ce qui est appréciable !!!
 
C'est nettement moins interactif et pas souvent souhaitable, car les gens aiment bien voir le résultat immédiat de leur post et pas "votre commentaire sera revu par un administrateur avant d'être publié".
 
Comme solution intermédiaire, un système d'alerte en cas de submit répétés depuis la même IP peut s'avérer envisageable, mais ça nécessite aussi de réagir et ça peut générer des false positive.
 
Ou encore un review pour les gens non-autentifiés mais pas de reviews pour les autres - dépend un peu de l'"ambiance" et du type de site, plus public ou plus cossy...
 
Enfin, life is full of choices, hein ;)


Message édité par sircam le 13-01-2005 à 19:20:35

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 13-01-2005 à 20:27:34    

A par avec l'ip et le cookie, on peut utiliser autre chose ? :??:
 
Sinon je pense avoir compris votre technique mais qu'utiliser pour savoir le temps qui s'écoule entre 2 message ?

Reply

Marsh Posté le 13-01-2005 à 20:50:12    

Trefledepique_W a écrit :

A par avec l'ip et le cookie, on peut utiliser autre chose ? :??:


Je pense que les réponses ci-dessus envisagent pas mal de pistes, non ? Il te reste l'authentification pure et dure, mais ça ne correspond pas forcément à ce que tu veux pour ton site.  [:airforceone]  
 

Trefledepique_W a écrit :

Sinon je pense avoir compris votre technique mais qu'utiliser pour savoir le temps qui s'écoule entre 2 message ?


Si tu as bien compris, tu as compris que ce n'est PAS la solution, PAS DU TOUT, pas bien, NO GOOD, nous sommes bien sur la même longueur d'onde ?
 
Bon... Sinon... Tu stockes l'IP et la date+heure des messages récents (ou de tous les messages disons) et tu vérifies si tu es dans l'intervalle ou non, c'est évident ?!
 
Au risque de me répéter, mais c'est pour être sûr : WARNING : *ne pas utiliser cette méthode* *please do not try this at home*
 
Pour le surplus, je suis unanimement considéré comme parano en la matière, mais je ne pense pas que je me perdrais dans ce genre de mécanisme.
 
Plus que les floods, tu devrais craindre les simples posts malveillants, racistes ou insultants, plus que les floods. Et ça, seul un contrôle rapproché te permet de les éviter (encore qu'un robot pourrait s'avérer fort précieux en première ligne).
 
A quoi bon un script anti-flood si tu laisses durant une semaine un post du genre "Ton site est une merde, c'est à chier" et consorts ?
 
 [:crosscrusher]  
 


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 13-01-2005 à 20:54:54    

ok :/

Reply

Marsh Posté le 13-01-2005 à 21:20:47    


 
Bah oui, un livre d'or, ça se modère avant toutes choses. Demande à Antp par exemple... :/

Reply

Marsh Posté le 13-01-2005 à 21:20:47   

Reply

Marsh Posté le 14-01-2005 à 15:40:31    

j'ai pensé bien sur à une partie d'administration afin d'effacer les messages, qui fonctionne :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed