AntiFlood

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : AntiFlood

Re: AntiFlood

par AB » 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:

Re: AntiFlood

par JohnSteven » 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 ?

Re: AntiFlood

par stealth35 » 04 févr. 2011, 21:32

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

Re: AntiFlood

par AB » 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.

Re: AntiFlood

par JohnSteven » 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é.

Re: AntiFlood

par AB » 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.

Re: AntiFlood

par stealth35 » 02 févr. 2011, 11:03

qui a fait le code ?

Re: AntiFlood

par JohnSteven » 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

Re: AntiFlood

par JohnSteven » 01 févr. 2011, 20:43

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

Re: AntiFlood

par stealth35 » 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

Re: AntiFlood

par moogli » 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).


@+

Re: AntiFlood

par JohnSteven » 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 ?

Re: AntiFlood

par Berzemus » 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...

Re: AntiFlood

par stealth35 » 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:

AntiFlood

par JohnSteven » 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: