Bannir un visiteur
Le principe du bannisement est d'empècher le visiteur de revenir en bloquant son adresse IP. Le plus gros problème vient du fait que l'addresse IP que l'on obtient avec $_SERVER['REMOTTE_ADDR'] change à chaque connection. Il suffirait donc au visiteur banni de se déconnecter puis de se reconnecter pour pouvoir à nouveau visiter le site et vous ennuyer.

Pour pallier à ce problème, nous allons utiliser $_SERVER['HTTP_X_FORWARDED_FOR'].
Pour mieux comprendre la différence entre ces deux variables serveur, voici un petit tableau explicatif qui provient du site: http://frederic.bouchery.free.fr.

Proxy transparent (proxy normal)
VariableAdresse IP
REMOTE_ADDRadresse IP du proxy
HTTP_VIAadresse IP du proxy
HTTP_X_FORWARDED_FORadresse IP de l'utilisateur

Proxy anonyme
VariableAdresse IP
REMOTE_ADDRadresse IP du proxy
HTTP_VIAadresse IP du proxy
HTTP_X_FORWARDED_FORadresse IP du proxy

Proxy aléatoire
VariableAdresse IP
REMOTE_ADDRadresse IP du proxy
HTTP_VIAadresse IP du proxy
HTTP_X_FORWARDED_FORune adresse IP aléatoire à chaque requête

Proxy hautement anonyme
VariableAdresse IP
REMOTE_ADDRadresse IP du proxy
HTTP_VIA(rien)
HTTP_X_FORWARDED_FOR(rien)
Copyright © http://frederic.bouchery.free.fr/?2004/09/12/17-Ip-Ip-Ip-Houra

Comme vous avez pu le remarquer, il n'y a qu'avec HTTP_X_FORWARDED_FOR qu'il y a moyen d'obtenir la "vraie" adresse IP du visiteur. Nous allons donc pouvoir faire une petite fonction pour vérifier si l'utilisateur a été banni ou non.
Pour ce faire, nous aurons besoin d'une table contentant deux champs, un id et un autre pour contenir l'ip. Je vous laisse le faire, vous savez commenf faire. Nommez cette table bannisement .

Le script

En premier lieu, on déclare la fonction qui aura comme argument l'adresse IP du visiteur. On appellera donc la fonction commme ceci:

banni($_SERVER['HTTP_FORWARDED_FOR']);

Commenceons maintenant notre fonction:

function banni($ip){
if($ip == ''){
$ip = $_SERVER['REMOTE_ADDR'];
}

J'ai mis ici une petite condition au cas où le visiteur aurait un proxy hautement anonymeet que nous n'aurions pas son adresse IP. Dans ce cas, mieux vaux utiliser REMOTE_ADDR plutôt que de laisser l'IP vide.
Il faut maintenant vérifier si l'IP est déjà dans la table, auquel cas, l'utilisateur est banni.
C'est parti:

$connection = mysql_connect("localhost", "root", "m_d_p");
mysql_select_db("data_base");
//Connection à la BDD

$mysql_query = "SELECT * FROM bannisement WHERE ip='$ip'";
$query = mysql_query($mysql_query) or die(mysql_error());
$resultat = mysql_num_rows($query);
//On a compté le nombre de fois que l'IP est dans la table.

if($resultat == 1){

S'il y a un résultat (donc que le visiteur est banni, on lui dit de passer son chemin. Sinon, on le laisse charger la page comme il le souhaite.


echo'Désolé, vous figurez sur les listes noires de ce site.  Vous pouver <a href="contact.php"> prendre
contact avec le webmaster</a> pour qu'
il vous explique les raisons de ce bannisement.';
mysql_close($connection);
//On se déconnecte

exit;
//Bon voyage pour le banni!
}

Dans ce script, on c'est contenté d'afficher un petit message si le visiteur était banni en lui donnant un lien vers la page de contact (qui ne peut pas être protégée, sauf si vous ne souhaitez pas que le visiteur banni puisse prendre contact avec vous) pour qu'il puisse s'expliquer avec vous sur les raisons qui vous ont motivé à le bannir.
Si l'IP n'est pas dans la table, on le laisse visiter tout ce qu'il veut, et donc on termine la fonction. De plus, il n'y a pas besoin de "else".

mysql_close($connection);
//S'il n'est pas banni, il n'a pu se déconnecter.
}//Fin de la fonction

Voilà, votre fonction est terminée. Il suffit de la placer un premier sur TOUTES les pages de votre site pour que le visiteur banni n'aie accès à aucune page.

Trouver l'IP du trouble-fête

S'il y a un visiteur qui vous gène sur votre site, arrangez vous, par exemple, pour enregistrer l'adresse IP de tous les visiteurs qui postent dans le livre d'or (s'il écrit des "saloperies" dans le livre d'or). Il ne vous restera donc plus qu'à insérer son IP dans la BDD à l'aide de PHPMyAdmin (vous pouvez vous créer un petit formulaire si vous le voulez).

: arrangez vous pour découvrir avec certitude l'adresse IP du "troube-fête" pour ne pas bannir un innocent visiteur.


Creative Commons License
Sauf mention contraire, le contenu de cette page est sous licence Creative Commons
Page générée en 0.3325 secondes.
Retour en haut de la page
Imprimer cette page