Vous êtes ici Codes PHP et MySQL > Sécurité > Anti flood basique avec table MySQL

 

Anti flood basique avec table MySQL

Les anti flood sont importants pour vos sites web. Cela interdit aux spameurs de hacker vos sites web en donnant un temps entre chaque soumission, lorsqu'ils utilisent vos formulaires.
 
KOogar
Site de l'auteur voir
[65] sources en PHP voir
Code vu 8428 fois
Enregistré le 13 Jan 2007
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Anti flood basique avec table MySQL
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Anti flood basique avec table MySQL                       */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts201-PHP.htm              */
/* Auteur         : KOogar                                                    */
/* Date édition   : 13 Jan 2007                                               */
/* Website auteur : http://www.koogar.fr                                      */
/*                                                                            */
/******************************************************************************/



// table correspondant aux requetes ci-dessous
CREATE TABLE flood (
  ip varchar(18NOT NULL default '',
  dernier int(11NOT NULL default '0',
  PRIMARY KEY  (ip)
) TYPE=MyISAM;


$time_flood '30'// 30 secondes

// EXEMPLE

// requete basique pour inserer
mysql_query("INSERT INTO flood VALUES ('$_SERVER[REMOTE_ADDR]', '" time() . 
"')");
// requete basique pour supprimer
mysql_query("DELETE FROM flood WHERE dernier + $time_flood < " time());



// COMMENT PROCEDER ??


$time_flood '30'// 30 secondes

// 1° d'abord commencer par supprimer tout ceux dont le temps a expirer
mysql_query("DELETE FROM flood WHERE dernier + $time_flood < " time());

// 2° ensuite prenez l'ip du visiteur
$resultat mysql_query(
"SELECT dernier FROM flood WHERE ip='$_SERVER[REMOTE_ADDR]'");

// 3° Si l'Ip du visiteur est deja dans la table, ai !!
if(mysql_num_rows($resultat) > )
    echo 'vous spammez !';

   
// 4° sinon tout va bien, reste plus qu'a inserer l'ip de votre visiteur dans la
// table
   else mysql_query("INSERT INTO flood VALUES ('$_SERVER[REMOTE_ADDR]', '" time() . "')");

?>

 

Fonctions du code

: Retourne une clé d'un tableau associatif - (PHP 4, PHP 5)
: Envoie une requête à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Retourne le timestamp UNIX actuel - (PHP 4, PHP 5)
: Retourne le nombre de lignes d'un résultat MySQL - (PHP 4, PHP 5, PECL...
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
Commentaires
Fonctionne très bien ! Par contre pour ceux qui sont un peu embrouillés, il faut prendre juste la partie : "Comment procéder". ;)
 
Joli
if(mysql_num_rows($resultat) > ???)
 
Merci pour le signalement. C'est corrigé, il y avait un petit problème de cache avec cette page.
 
bonjour, juste une question, au niveau du serveur, sa se pose dans quelle fichier et a quel place
 
Pour monter la table tu peux utiliser phpMyAdmin et le reste du code c'est du pur php donc utilise un script avec une extension php  
 
 Salut à tous,
en faite il faut faire comme ça:
<?php 
$time_flood '30'// 30 secondes 
?>
Merci d'avance

 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Sécurité

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité