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 :
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>";
}
}
?>
7 juil. 2008 à 14:39
- 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.
7 juil. 2008 à 11:28
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.
2 avril 2008 à 13:20
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.
21 janv. 2008 à 19:27
Sinon ban tt le monde .. ou personne c'est encore mieux !
8 avril 2007 à 01:10
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)
@++
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.