/*---------------------------------------------------------------*/
|
/*
|
Titre : Anti flood basique - MySQLi
|
|
URL : https://phpsources.net/code_s.php?id=201
|
Date édition : 13 Jan 2007
|
Date mise a jour : 19 Sept 2019
|
|
Rapport de la maj:
|
- refactoring du code en PHP 7
|
- fonctionnement du code vérifié
|
*/
|
/*---------------------------------------------------------------*/?>
|
CREATE TABLE flood (
|
ip varchar(18) NOT NULL default '',
|
dernier int(11) NOT NULL default '0',
|
PRIMARY KEY (ip)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
<?php
|
|
// COMMENT PROCà‰DER ??
|
|
|
$time_flood = '10'; // 10 secondes
|
|
$db_server = 'localhost'; // Adresse du serveur MySQL
|
$db_name = ''; // Nom de la base de données
|
$db_user_login = 'root'; // Nom de l'utilisateur
|
$db_user_pass = ''; // Mot de passe de l'utilisateur
|
|
// Ouvre une connexion au serveur MySQL
|
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);
|
|
// ip du client
|
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
} else {
|
$ip = $_SERVER['REMOTE_ADDR'];
|
}
|
|
// 1° d'abord commencer par supprimer tout ceux dont le temps a expirer
|
$conn->query("DELETE FROM flood WHERE dernier + $time_flood < " . time());
|
|
// 2° ensuite prenez l'ip du visiteur
|
$q = $conn->query("SELECT dernier
|
FROM flood
|
WHERE ip='$ip'");
|
|
// 3° Si l'Ip du visiteur est déjà dans la table, ai !!
|
if($q->num_rows > 0 )
|
echo 'vous spammez !';
|
|
|
// 4° sinon tout va bien, reste plus qu'a insérer
|
// l'ip de votre visiteur dans la table
|
|
else mysql_query("INSERT INTO flood
|
VALUES ('$ip', '" . time() . "')");
|
|
| ?> |
Invité
06 Aout 2010 à 19:52Salut à tous, en faite il faut faire comme ça: <?php
?>
Merci d'avance
KOogar
13 Juin 2010 à 14:33Pour 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
Invité
13 Juin 2010 à 13:46bonjour, juste une question, au niveau du serveur, sa se pose dans quelle fichier et a quel place
KOogar
10 Jan 2010 à 23:21Merci pour le signalement. C'est corrigé, il y avait un petit problème de cache avec cette page.
Invité
10 Jan 2010 à 18:42Joli
Furious
19 Mars 2008 à 10:42Fonctionne très bien ! Par contre pour ceux qui sont un peu embrouillés, il faut prendre juste la partie : "Comment procéder". ;)