AntiFlood

Petit nouveau ! | 6 Messages

26 janv. 2011, 00:00

Salut !

J'ai cherché sur internet mais je n'ai rien trouvé, et je ne connais strictement rien en anti flood.

En effet j'ai mon système de messages que j'ai mis en place, et j'aimerais faire en sorte qu'on puisse envoyer 1 message par minute.

Donc si le type a déjà envoyé un message j'aimerai qu'il puisse envoyer un autre seulement après 60 secondes.

Est-ce possible ? Vous avez besoin de quoi comme code ?

Merci :wink:

ViPHP
ViPHP | 5462 Messages

26 janv. 2011, 00:03

Salut !

J'ai cherché sur internet mais je n'ai rien trouvé, et je ne connais strictement rien en anti flood.

En effet j'ai mon système de messages que j'ai mis en place, et j'aimerais faire en sorte qu'on puisse envoyer 1 message par minute.

Donc si le type a déjà envoyé un message j'aimerai qu'il puisse envoyer un autre seulement après 60 secondes.

Est-ce possible ? Vous avez besoin de quoi comme code ?

Merci :wink:
hello, il suffit d'aller checker dans la base la date de son dernier message, et si ca fait moins de 1min, tu mets une erreur :wink:

ViPHP
ViPHP | 4039 Messages

26 janv. 2011, 11:08

J'ai cherché sur internet mais je n'ai rien trouvé, et je ne connais strictement rien en anti flood.
Ne t'inquiète pas, nous non plus, apparemment...
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Petit nouveau ! | 6 Messages

26 janv. 2011, 18:03

Salut !

J'ai cherché sur internet mais je n'ai rien trouvé, et je ne connais strictement rien en anti flood.

En effet j'ai mon système de messages que j'ai mis en place, et j'aimerais faire en sorte qu'on puisse envoyer 1 message par minute.

Donc si le type a déjà envoyé un message j'aimerai qu'il puisse envoyer un autre seulement après 60 secondes.

Est-ce possible ? Vous avez besoin de quoi comme code ?

Merci :wink:
hello, il suffit d'aller checker dans la base la date de son dernier message, et si ca fait moins de 1min, tu mets une erreur :wink:
Et t'as une idee de comment on fait ? :( Il ne faut pas l'IP du type aussi? Ou bien ca reste dans le cache du browser ?

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

26 janv. 2011, 22:11

yop,

par exemple en faisant une requete select en comparant le pseudo et la date à celui actuel (par exemple pseudo='moogli' && date < (now() - X minutes) si pas de tuple tu insert sinon flood donc pas d'insertion).


@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 5462 Messages

01 févr. 2011, 19:27

c'est une niveau de tes requêtes SQL qui faut voir ca, avant de faire le INSERT INTO, il faut regarder quand la personne a envoyer son dernier message

Petit nouveau ! | 6 Messages

01 févr. 2011, 20:43

C'est trop technique pour moi, c'est plus des trucs d'amateurs.. je verrai sur google

Petit nouveau ! | 6 Messages

01 févr. 2011, 22:38

J'ai trouve qqchose qui ressemble a ca:
$time_flood = '60'; //

mysql_query("DELETE FROM flood WHERE dernier + $time_flood < " . time());
$resultat = mysql_query(
"SELECT dernier FROM flood WHERE ip='$_SERVER[REMOTE_ADDR]'");
     if(mysql_num_rows($resultat) > 0 )
     echo 'vous spammez !';
     else mysql_query("INSERT INTO flood VALUES ('$_SERVER[REMOTE_ADDR]', '" . time() . "')");
?>
Ma fonction d'envoi est comme ca:
private function addShout($nickname = null, $ville = null, $gsm = null, $message = null) {
		$time = date('Y-m-d H:i:s');
		$query = mysql_query("INSERT INTO `shouts` (`nickname`, `ville`, `gsm`, `message`, `date_added`) VALUES ('".$nickname."', '".$ville."', '".$gsm."', '".$message."','".$time."');");
			if(!$query) {
			$this->returnShouts(null, 'Database connection problem!');	
		} else {
			$this->returnShouts('Shout added successfully');
		}
Je sais pas comment l'integrer en fait. J'ai deja un INSERT INTO

ViPHP
ViPHP | 5462 Messages

02 févr. 2011, 11:03

qui a fait le code ?

ViPHP
AB
ViPHP | 5818 Messages

02 févr. 2011, 17:43

Je vois pas ce qui pourrais t'aider dans ce que tu as trouvé. Tu n'as certainement pas cherché dans la bonne direction.
stealth35 t'a déjà dit que c'était au niveau des requêtes, mais pas n'importe lesquelles.

D'abord il faut formuler ça par des phrases bien compréhensible en français que l'on traduira ensuite par du code.

1/ On cherche la dernière date à laquelle le visiteur a posté un message

2/ On la compare à la date actuelle et si la différence est de plus d'une heure :

3/ On insère le message.

4/ Sinon on enregistre éventuellement un message d'explication qui informera le visiteur.

Cela te convient comme fonctionnement ?

Si oui commence par faire la première requête qui correspond à la première ligne.

Petit nouveau ! | 6 Messages

04 févr. 2011, 20:24

Oui, c'est ce que je veux, mais le problème c'est que je ne suis pas du tout calé en php donc je mets énormément de temps à trouver des commandes etc. et je dois être prêt pour Lundi. :(

Comme plan B je pourrais désactiver le bouton ''Envoyer'' pendant 60 secondes après l'avoir clické.

ViPHP
AB
ViPHP | 5818 Messages

04 févr. 2011, 20:42

Si tu veux pas faire ça proprement en allant vérifier dans la bdd, tu peux te servir des variables de sessions.
Tu enregistres l'heure lors du post dans une variable de session. Et au prochain envoi tu compare l'heure actuelle avec celle enregistrée dans ta variable.
Mais le visiteur pourra passer cette contrainte en fermant totalement (ce qui reviendra à fermer la session) puis en réouvrant son navigateur.

ViPHP
ViPHP | 5462 Messages

04 févr. 2011, 21:32

et je dois être prêt pour Lundi.
c'est ton travaille ?

Petit nouveau ! | 6 Messages

04 févr. 2011, 22:51

Non, j'ai promis d'aider quelqu'un pour un projet. A la base je devais m'occuper juste du site web mais il m'a demandé ca aussi, rajoutant des petits trucs avec le temps. Je suis pas payé et Lundi on doit mettre ça en marche.

@AB, c'est pas ce que j'ai mis dans un de mes postes précédents ?

ViPHP
AB
ViPHP | 5818 Messages

05 févr. 2011, 19:00

@AB, c'est pas ce que j'ai mis dans un de mes postes précédents ?
On avait pas encore parlé de session dans cette discussion avant mon message :wink: