Bannir un utilisateur par cookie

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 523 fois - Téléchargée 21 fois


Contenu du snippet

Permet de bannir un utilisateur par simple cookie.
Dans la table p3x_cook lorsque le champ ban est égal à 1, l'utilisateur qui possède le cookie associé à l'id correspondant est banni.
Il ne poura donc plus accéder au site.

Source / Exemple :



          • BASE DE DONNEES *****
CREATE TABLE p3x_cook(id INT(50), ban INT(1), date VARCHAR(20)); INSERT INTO p3x_cook VALUES('1','0','01/01/2007');
          • SCRIPT A PLACER AU DEBUT DE CHAQUE PAGE DE VOTRE SITE *****
<?php // Initialisation des variables de connexion à la base de données $serveur = "localhost"; $user = "login"; $password = "passe"; $base = "bdd"; // Récupération des variables date d'aujourd'hui et cookie $date2 = date("j/m/Y"); $cook = $HTTP_COOKIE_VARS["p3x_cook"]; // Connexion à la base de donnée. $connexion = mysql_connect($serveur,$user,$password); $db = mysql_select_db($base, $connexion); // Sélection de la table p3x_cook $sql = "SELECT * FROM p3x_cook WHERE id='$cook'"; $req = mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error()); $data = mysql_fetch_array($req); // Si un des identifiants sélectionnés est égal au cookie on récupère les variables dernière date de connexion et banni $ban = $data['ban']; $date = $data['date']; $id = $data['id']; // Si aucun identifiant n'est sélectionné if($id == NULL) { // Sélection du dernier identifiant de la table p3x_cook $sql = "SELECT * FROM p3x_cook ORDER BY id DESC LIMIT 1"; $req = mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error()); $data = mysql_fetch_array($req); // Initialisation d'une nouvelle variable identifiante $id = $data['id']+1; // Insertion de cette variable dans la table p3x_cook avec la date d'aujourd'hui $sql = "INSERT INTO p3x_cook VALUES($id, 0, '$date2')"; $req = mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error()); // Création d'un nouveau cookie qui dispose de ce nouvel identifiant setcookie("p3x_cook",$id); } // Sinon on regarde si l'utilisateur est banni else { if($ban == 1) { // On affiche un message puis on arrête le script echo "Vous n'avez plus l'autorisation d'accéder à ce site"; echo "<noscript>"; } } ?>

A voir également

Ajouter un commentaire

Commentaires

p3x
Messages postés
214
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
9 janvier 2019

spour ca que dans le script j'ai fait le cookie + la BDD
- si l'utilisateur n'a pas de cookie il ne sera pas banni mais le script va lui en recréer un.
- si tu veux bannir un user il faut changé juste le champ ban de 0 à 1 dans la table.

Et l'intérêt en fait du script c'est que tu peux très bien bannir un utilisateur même si il n'est pas membre ou inscrit sur le site.
Si par exemple tu décide de mettre un forum sur un site et que sur celui-ci les utilisateurs ne sont pas obligé de s'inscrire pour poster des messages, si il y a un abus tu peux tjs bannir.
Mais pour bien identifier l'utilisateur, il faut bien sur créer une relation entre les ID de la table cookie et les ID de la table forum.
RPGamer
Messages postés
10
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
25 juillet 2008

Malheureusement, ça ne peut pas fonctionner. Lors de l'inscription d'un nouveau membre, il n'aura de toute façon pas de cookie. Il sera donc considéré comme banni. De plus, si un membre qui n'a jamais été banni décide de faire le ménage dans ses cookies, il sera banni accidentellement.

Pour moi, le plus efficace est le plus ennuyant pour l'utilisateur est de bannir son adresse e-mail et son pseudo EN PLUS de lui coller un cookie sur le nez. Il suffit de garder l'entrée de l'utilisateur dans la table et de créer un champ qui vaudra 1 lorsque l'utilisateur est banni, sinon 0. Au moment de se connecter, si son statut est bann, il ne pourra pas se connecter. Si il veut recréer un compte, il ne pourra pas utiliser la même adresse e-mail OU le même pseudo. Ca en dissudera plus d'un.

Le cookie permet d'en rajouter une couche en 2ème condition lors de la connexion, de l'inscription ou même de l'accès au site.

Comme dit plus haut, il est impossible de bannir définitivement quelqu'un, comme il est impossible de se targuer d'avoir un site 100% sécurisé. Mais il y a statistiquement moins de chance de déjouer un système qui possède un maximum de portes.
levraipestouille
Messages postés
1
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
2 avril 2008

Slt :)
L'idée du cookie est interressante , mais je trouve qu'il est plus logique de faire l'inverse , c'est a dire : si un cookie est inscrit sur l'ordi = accés ok au site. Pas de cookie=pas d'accés. c'est plus logique dans la mesure ou la personne ne pourra pas "s'écrire" un cookie pour aller sur le site , il est en effet plus facile de s'effacer le cookie pour pouvoir visiter le site que de s'en ecrire un ;)
Bonne journée a tous.
Carabite
Messages postés
6
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
21 janvier 2008

Les sessions ca se nettoie aussi car globalement c'est soit un cookie soit dans l'url, bref ya tjs bien moyen ... par contre bannir tout le sous ip du type 255.255.255.*** ca, meme pour les AOL, c'est efficace :)

Sinon ban tt le monde .. ou personne c'est encore mieux !
cs_jean84
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

La gestion des cookies est contre indiquee dans les applications lie a la securite (de pres comme de loin). Ce type de protection (peut on appeler sa comme sa ?) ne doit jamais etre appliquer cote client mais cote serveur, les addons permettant de modifier ses cookies sont nombreux sur le net (rien que pour firefox, y a Anec Cookie Editor qui fonctionne a merveille et perso, je regarde souvent du cote de mes cookies voir ce qui se passe, juste par curiosite). Et pour finir sur firefox, le mien est configure pour tout efface de maniere silencieuse a chaque fois que je le ferme...
J'imagine que pour banir quelqu'un definitivement, il faut qu'il est prealablement cree un compte que tu supprimes derriere... je vois pas trop comment faire pour supprimer de maniere sur quelqu'un surfant juste sur ton site sans y etre connecte. On a deja parler de la protection IP trop facilement contournable (suffit de taper "free proxy server" sur google pour regler la question).
As-tu eu utilise ton script dans des cas particulier (autre qu'un forum) ?
Rajoutes-tu quelque chose derriere ?

"euh.... FHX, ca c'est uniquement quand t'as un joli reseau feminin avec des jolies NAT...
si A n'a pas l'adresse ip de C. c'est que t'as mis une regle MASQUERADE."

Un reseau feminin ? C'est quoi ?

+1 pour FhX.
Je bosse dans l'administration reseau et la premiere chose que l'on apprend, c'est que les reseaux n'utilisent pas les adresses IP comme on le pense mais bel et bien les adresses MAC (via le protocole ARP et RARP). Dans l'exemple de A voulant discuter avec C en passant par B, C aura bel et bien l'adresse IP de A mais jamais son adresse MAC. C'est grace au routage effectue par B qu'un packet peut changer de reseau. B entretient une table de routage associant les adresses IP au adresse MAC des prochains routeurs.
Pas besoin d'un reseau local (cas de la mascarade comme tu l'as mentionne), ce shema fonctionne sur internet tous les jours (rien qu'en se connectant sur CS par exemple ;-) ). On peut voir les passerelles via un banal traceroute (mais j'imagine que tu le sais deja :p)

@++
Afficher les 58 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.