Page 1 sur 1
AntiFlood
Posté : 26 janv. 2011, 00:00
par JohnSteven
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

Re: AntiFlood
Posté : 26 janv. 2011, 00:03
par stealth35
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

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

Re: AntiFlood
Posté : 26 janv. 2011, 11:08
par Berzemus
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...
Re: AntiFlood
Posté : 26 janv. 2011, 18:03
par JohnSteven
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

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

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 ?
Re: AntiFlood
Posté : 26 janv. 2011, 22:11
par moogli
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).
@+
Re: AntiFlood
Posté : 01 févr. 2011, 19:27
par stealth35
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
Re: AntiFlood
Posté : 01 févr. 2011, 20:43
par JohnSteven
C'est trop technique pour moi, c'est plus des trucs d'amateurs.. je verrai sur google
Re: AntiFlood
Posté : 01 févr. 2011, 22:38
par JohnSteven
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
Re: AntiFlood
Posté : 02 févr. 2011, 11:03
par stealth35
qui a fait le code ?
Re: AntiFlood
Posté : 02 févr. 2011, 17:43
par AB
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.
Re: AntiFlood
Posté : 04 févr. 2011, 20:24
par JohnSteven
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é.
Re: AntiFlood
Posté : 04 févr. 2011, 20:42
par AB
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.
Re: AntiFlood
Posté : 04 févr. 2011, 21:32
par stealth35
et je dois être prêt pour Lundi.
c'est ton travaille ?
Re: AntiFlood
Posté : 04 févr. 2011, 22:51
par JohnSteven
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 ?
Re: AntiFlood
Posté : 05 févr. 2011, 19:00
par AB
@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
