[php]antiflood pour un forum

antiflood pour un forum [php] - PHP - Programmation

Marsh Posté le 29-06-2002 à 11:01:10    

kel est le meilleur moyen pour un anti-flood ?

Reply

Marsh Posté le 29-06-2002 à 11:01:10   

Reply

Marsh Posté le 29-06-2002 à 11:18:41    

Tu peux etre un peu plus precis ?  :heink:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 29-06-2002 à 11:20:49    

bah comme ici!
tu met pas plus de 3 post d'affilé du meme gars en 10minutes


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 29-06-2002 à 11:21:20    

ok, je suis en train de prog un forum, et je voulais savoir kel etait le meilleur princpe pour empecher le flood, paske le truc des time()+30sec, ca mache pa apparement

Reply

Marsh Posté le 29-06-2002 à 11:22:23    

Suri a écrit a écrit :

bah comme ici!
tu met pas plus de 3 post d'affilé du meme gars en 10minutes




 
oui mais kel en est le principe ?

Reply

Marsh Posté le 29-06-2002 à 11:36:15    

--stan-- a écrit a écrit :

 
 
oui mais kel en est le principe ?




 
Ben perso, a chaque fois qu'un user poste sur mon forum, j'insert ds la base le lastvisite, sous forme de time().
 
Et de meme quand il poste, tu compare le lastvisite avec un time()-30 :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 29-06-2002 à 12:24:43    

Ben ca fonctionne tres bien comme ca.
C'est le rpincipe que j'utilise sur le forum que j'ai developpe et aucun prob.
 
D'ailleurs suffit d'insérer le time() juste au moment ou la personne poste c suffisant apres lors du post suivant tu compares.
 
Comme dans tous les cas tu dois appeler les données relatives a la personne, un valeur de plus ou de moins ca change plus grand chose, ca fait juste une requete de plus a l'insert du time() :D

Reply

Marsh Posté le 29-06-2002 à 12:41:04    

Max Evans a écrit a écrit :

 
 
Ben perso, a chaque fois qu'un user poste sur mon forum, j'insert ds la base le lastvisite, sous forme de time().
 
Et de meme quand il poste, tu compare le lastvisite avec un time()-30 :)




 
non, justement, ca c contournable tres facilement parait-il

Reply

Marsh Posté le 29-06-2002 à 13:31:11    

--stan-- a écrit a écrit :

 
 
non, justement, ca c contournable tres facilement parait-il




 
JBs >> Effectivement :jap:
--stan--  >> Je vois pas comment c detournable  :??:  :??:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 29-06-2002 à 14:41:49    

Moi non plus

Reply

Marsh Posté le 29-06-2002 à 14:41:49   

Reply

Marsh Posté le 29-06-2002 à 14:54:30    

Max Evans a écrit a écrit :

 
 
JBs >> Effectivement :jap:
--stan--  >> Je vois pas comment c detournable  :??:  :??:  




 
 
ba moi non plus mais il fo demander a GHz sur tc, Limit ou POWA ici, ou Cyril sur aceboard.net (c la meme personne)

Reply

Marsh Posté le 29-06-2002 à 14:56:07    

Ah, c Ghz qui ta dis ça, v lui demander sur ICQ

Reply

Marsh Posté le 29-06-2002 à 16:35:24    

ok

Reply

Marsh Posté le 29-06-2002 à 17:37:36    

J'ai un prog de commentaires un peu comme Les Commentaires (www.phpscripts-fr.net).
Dessus il n'y a pas d'inscription mais il faut entrer son pseudo.
Mon prog vérifie donc pour le même pseudo que le gars ne poste pas 2 fois à - de 30s d'intervalle (au cas où il appuie pls fois sur le bouton Submit).
Je le conçois, c'est pas très fiable, mais c'est suffisant pour un truc sans inscription, et ce, sans base de données en plus.
 
Voici la fonction :

Code :
  1. function No_Flood($nom='') {
  2.   if (!file_exists('noflood.txt'))
  3.     fclose(fopen('noflood.txt', 'w'));
  4.   if (!($fp = fopen('noflood.txt', 'r')))
  5.     return false;
  6.   $farray = array();
  7.   while($ligne = fgetcsv($fp, 1000, ':'))
  8.     $farray[$ligne[0]] = (int)(trim($ligne[1]));
  9.   fclose($fp);
  10.   $now = time();
  11.   if (isset($farray[$nom]) and $farray[$nom]>$now)
  12.     $retour = false;
  13.   else
  14.     $retour = true;
  15.   if (!($fp = fopen('noflood.txt', 'w')))
  16.     return $retour;
  17.   $farray[$nom] = time()+30;
  18.   foreach ($farray as $name => $time) {
  19.     if ($time>$now)
  20.   fputs($fp, $name.':'.(string)$time."\n" );
  21.   }
  22.   fclose($fp);
  23.   return $retour;   
  24. }


Message édité par Dost67 le 29-06-2002 à 17:41:26
Reply

Sujets relatifs:

Leave a Replay

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