Page 1 sur 1

Login avec restrictions

Posté : 09 mai 2006, 09:08
par EYMITS
Bonjour,

Alors voilà mon problème. Je doit effectuer un login d'utilisateur pour une boîte. Mais lors du login, le conseiller devrait avoir accès à ses propres clients.

Il y aurait 3 niveau de sécurité, le niveau 1, c'est le super admin, celui qui peut tout faire, le niveau 2, niveau des conseillers et niveau 3, niveau des sous-conseiller.

Pour le login j'y arrive y a pas de soucis, mais je ne sais pas comment faire pour que lorsqu'il est loggé, le conseiller n'est accès qu'à ses propres clients, pas ceux des autres.

Posté : 09 mai 2006, 09:47
par zeus
Il faut que, pour chaque client, tu puisses mémoriser "son" conseiller. Généralement, c'est au niveau de la base de données que ca se passe : dans la table qui contient les clients, tu prévois un champs "id_conseiller" et quand un conseiller veux voir les clients, tu ne sélectionnes que ceux dont le champ "id_conseiller" contient l'identifiant du conseiller connecté.

Si tu veux d'autre explications, n'hesite pas à poser des questions sur les points qui te dérange ;)

Posté : 09 mai 2006, 10:23
par EYMITS
Dans la base j'ai déjà un champ qui s'appelle num_conseiller. Ce que je que je veux savoir, c'est comment mettre en place ceci dans une page PHP.

Posté : 09 mai 2006, 10:27
par zeus
Quand une personne se connecte sur ton site, tu récupère son identifiant et tu le mémorise en session.

Quand la personne connecté veux afficher "ses" clients, tu lance une requete SQL qui va prendre tu les client où num_conseiller = $id_conseiller

Qu'est ce que tu ne comprend pas ? la logique, la requete, le code ?

Posté : 09 mai 2006, 10:31
par EYMITS
La requête. Je ne sais pas comment la faire.

Posté : 09 mai 2006, 10:41
par iclo
Un simple select avec une clause where sur le numéro du conseiller des clients, comme te l'a conseiller Zeus.
Un tutorial sur sql te renseignera complétement sur le sujet.

Posté : 09 mai 2006, 10:42
par zeus
Simplement
$str_requete = "SELECT liste_des_champs
FROM table_client
WHERE num_conseiller=".$num_conseiller;
En remplacant liste_des_champs par les champs que tu veux et table_client par le nom de ta table. Et où $num_conseiller contient l'identifiant du conseiller connecté

Posté : 09 mai 2006, 10:45
par EYMITS
Ha tout simplement ? lol ben merci.
Si jamais j'ai de nouveau des soucis je reviendrais ^^
Merci.

Posté : 09 mai 2006, 20:43
par Bioas
J'ai lu ton post et je voulais m'assuré que tu comprene autant la logique que la requète. C'est très simple.

Admetons que tu aie un Conseillé qui lui doit se chargé de ces 3 Conseillé.
Tu as un tableau qui contien tout les conseillé et sous conseillé. Dans ce tableau tu devrais normalement avoir une valeur clé pour identifié chacun de ceux ci qui généralemetn est nommé "Id", le nom du conseillé ou son nom d'utilisateur "Name", son niveau dans la hiérarchie (de 0 à 10 et + ou Admin/Conseillé/Sous-Conseillé) nommé "Group", et pour les sous-conseillé des conseillé un champ qui serais "sConseil".

Ceci donnerais un tableau qui resemblerais à ceci :
Tableau - User ::
Id -> 1 -> 2
Name -> Alain -> Gérard
Group -> Conseille -> Sous-Conseillé
sConseil -> 2, 3, 4 -> NULL (Champ Vide)

Du coté de php maintenant. Ta base de donné serais connecté, et l'utilisateur aussi. Tu devrais donc avoir une façon simple de récupéré l'identifiant de l'utlisateur connecté qui serais un chifre ou un nombre. Moi j'ai l'habitude de stoqué cette information dans la variable $_SESSION, et plus précisément dans un Champ "Id", comme pour la base de donnée. Ce qui donne $_SESSION['Id']. A partir de sa tu peut formulé une requète à ta base de donné que je vais t'écrire ici. J'ai choisi d'y metre une fonction pour que le code soit plus simple.

Code : Tout sélectionner

Function getUserInfo($Id) { $Reqete=mysql_query("SELECT Name, Group, Conseil FROM User WHERE Id='".$Id."'"); If(mysql_num_rows($Requete)>=1) { while($row=mysql_fetch_row($Requete)) { $Resulta['Name']=$row[0]; $Resulta['Group']=$row[1]; $Resulta['Conseil']=$row[2]; } } Return $Resultat; //Résultat est un Tableau contenant les information de l'utilisateur... } // Récupération et affichage des informations des sous-conseillé d'Alain : $Req=mysql_query("SELECT sConseil FROM User WHERE Id='".$_SESSION['Id']."'"); echo ""; if(mysql_num_rows($Req)==1) { $ligne=mysql_fetch_row($Req); $sConseil=explode(", ", $ligne[0]); foreach($sConseil as $valeur) { $sConseil_Info=getUserInfo($valeur); echo "Nom :".$sConseil_Info['Name']."<br>\n"; echo "Groupe :".$sConseil_Info['Group']."<br>\n"; echo "<br><br>\n"; } }
Pour ce code Alain doit être connecté et son identifian doit être stoqué dans la variable $_SESSION['Id'], si ce n'est pas le cas tu devra changer cette ligne :

Code : Tout sélectionner

$Req=mysql_query("SELECT sConseil FROM User WHERE Id='".$_SESSION['Id']."'");
par celle-ci :

Code : Tout sélectionner

$Req=mysql_query("SELECT sConseil FROM User WHERE Id='1'");

Tu pourais étendre tout ceci beaucoup plus loin mais si tu n'est pas rendu la tu devrais commencé par ce petit bout de code just for you.
Je n'ai pas testé le code mais il devrais fonctionné. Avec la fonction tu peut aussi récupéré le nom d'Alain comme tu le fait avec les autre plus bas dans la boucle. La fonction explode sépare les identifiant des sous conseillé contenu dans le champ sConseil d'alain de cette mainere : 1:2:3.
Ces valeur sont chacune dans $sConseil[0] $sConseil[1] et $sConseil[2].
Plutot que le "foreach" tu aurais pu faire un "for" comme présenté ci-dessous, mais il est un peut plus compliqué. N'oublis pas de visité le site php.net qui contien toute la documentation sur ce que tu vient de lire dans ce post, sauf pour les requète Sql.

Code : Tout sélectionner

for($i=0; $i<count($sConseil); $i++) { $sConseil_Info=getUserInfo($sConseil[$i]); echo "Nom :".$sConseil_Info['Name']."<br>\n"; echo "Groupe :".$sConseil_Info['Group']."<br>\n"; echo "<br><br>\n"; }
Et voila, c'est aussi simple que sa.
Bonne chance :)

Posté : 10 mai 2006, 09:06
par zeus
:shock: