Tout d'abord on va créer une petite base de données avec les tables suivantes :
user (no_user, compte_user, pass_user , no_groupe,photo_user ); | # cette table sert à stocker les les comptes d'utilisateurs |
groupe_user (no_groupe,nom_groupe); | # les groupe d'utilisateurs |
fonctionnalites (no_fonc, nom_fonc); | # les fonctionnalités sur le site |
autorisation_page(no_fonc,no_groupe) | #définir les droits d'accès aux fonctionnalités de la page pour chaque groupe d'utilisateur |
Mes fichiers
- erreurs.php --> servi l'affichage des erreurs sur la page
- centre.php --> servi l'affichage du centre de la page
- init.php --> initialisation de la variable $_SESSION :
<? @session_start(); $_SESSION['user']="visiteur"; // affecter les valeurs initiale pour la variable $_SESSION $_SESSION['stat']="visiteur"; $_SESSION['no_groupe']=4; ?>
- menunav.php, menunav_gauche.php --> servi l'affichage de l'affichage des menus de navigation.
<? session_start(); var_dump($_SESSION); include "db_connect.php"; // insérer la page db_connect --> contient les fonctions de la connection à la base de données. include "erreurs.php"; // pour le gestion d'affichage d'erreurs /************************************************************************************************* VERIFICATION DU COMPTE D'UTILISATEURS : - Revevoir les information depuis le formulaire de login - Chercher tous les champs dans la table user - Balancer le résultat dans un tableau - Comparer l'égalité entre les valeurs reçues et les valeurs trouvée dans la base mysql - Démarrer le session si tout est ok **************************/ if ((isset($_POST['login'])) && (isset($_POST['pass']))) // si l'utilisateur se logue avec un compte et mot de passe { $compte=$_POST['login']; //affecter la valeur du login au $compte $passe=$_POST['pass']; // et mot de passe $chercher_login="select * from user where compte_user='$compte' and pass_user='$passe'"; // sélectionner tous les éléments dans la table user $chercher=mysql_query($chercher_login) or die (mysql_error()); //exécution de la requête if($result=mysql_fetch_array($chercher)) //si le résultat pour le compte utilisateur et mot de passe trouvé corresponds au celui du login { $group=$result['no_groupe']; // affecter le valeur du groupe pour pouvoir trouvé le nom du groupe d'utilisateur echo $group; $search_group="select nom_groupe from groupe_user where no_groupe='$group'"; //chercher le nom du groupe auquel l'utilisateur appartient $search=mysql_query($search_group); // on lance la recherche! $result_search=mysql_fetch_row($search); // on indexe le résultat de la recherche dans un tableau @session_start(); // démarer une session $_SESSION['user']=$compte or die (mysql_error()); // enregistrement du compte utilisateur $_SESSION['no_groupe']=$result['no_groupe']; // son numéro de groupe $_SESSION['no_groupe']=intval($_SESSION['no_groupe']) ; // conversion en integer $_SESSION['stat'] = $result_search[0] ; // enregistre le statut de utilisateur $_SESSION['id']= session_id(); // variable contenant l'ID de la session $centre = "centre.php"; // si l'utilisateur est enregistré alors affecter le centre de la page pour les user authentifié $_SESSION['image']=$result['photo_user']; // pour l'affichage de la photo d'utilisateur // dans le cas ou il y a des erreurs de mot de passe ou login : afficher les messages d'erreurs } elseif ($result['compte_user'] != $_POST['login'] && $result['pass_user']!= $_POST['pass']) { $centre=$erreur_login_pass; } elseif($result['pass_user']!= $_POST['pass']) { $centre=$erreur_pass; } elseif($result['compte_user'] != $_POST['login']) { $centre=$erreur_login; } } elseif ((!isset($_SESSION['user']))&& (!isset($_SESSION['stat']))) { include "init.php"; } else { @session_start(); } ?> <? /* ************L'AFFICHAGE DE LA PAGE COMMENCE ICI *************/ ?> <html> <head><title>Index</title></head> <body> <table width="100%" height="100%" border="1"> <tr height="200px"><td height="135" align="center">Ici commence l'entête de la page</td > </tr> <!-- entête de la page --> <tr ><td height="40px" >L'intermédiaire</td></tr > <tr ><td> <table height=="80%" width="100%" border="1"> <tr height="40px"><td width="50%" >Nous sommes le:<?php echo date("d - m - y"); ?></td> <td width="50%" > <table border=0> <tr> <td width="100%"> <?php include "affiche_session.php"; ?> //echo "<img src=\"$imag\">"; </td> <td><? if ($_SESSION['stat']!='visiteur') { echo "<a href=\"log_out.php\">Deconnexion</a>"; } else { echo " "; } ?> </td > </tr > </table > </tr> <tr><td colspan="2"> <table cellpadding="0" cellspacing="0" border="1" height="100%" align="center" width="100%"> <tr> <td width="20%"><?php include "menunav.php"; ?> </td> <td width="60%"> <? if(@$centre=$erreur_login_pass ||$centre=$erreur_pass||$centre=$erreur_login ) { if (@$result['compte_user'] != @$_POST['login'] && @$result['pass_user']!= @$_POST['pass']) { $centre=$erreur_login_pass; echo $centre; } elseif(@$result['pass_user']!= @$_POST['pass']) { $centre=$erreur_pass; echo $centre; } elseif(@$result['compte_user'] != @$_POST['login']) { @$centre=$erreur_login; echo $centre; } } else { include "$centre"; } ?></td> <td width="20%"><? include "menunav_gauche.php"; ?></td> <? // affichage du menu gauche de la page (facultatif) ?> </tr> </table> </td> </tr> </table> </td > </tr > <tr height="100px"><td colspan="2">Footer</td></tr> </table> </body> </html>
Après dans chaque page du site web, il faut faire : include "fonc_permis.php". La page fonc_permis.php est écrite de manière suivante:
<?php @session_start(); include "erreurs.php"; include "db_connect.php"; // connexion à la base de données function chercher_nom_fonc ($no_fonct) // cette fonction renvoie le nom de la fonctionnalité selon le numéro envoyé { $cherche_nom_fonc= "select nom_fonc from fonctionnalites where no_fonc = '$no_fonct'"; // la requete dans la base de données $go = mysql_query($cherche_nom_fonc) or die (mysql_error()); // exécution de la requête $result_cherche= mysql_fetch_row($go); // affecter les valeurs trouvées de la recherche dans un tableau return $result_cherche[0]; // retourner le résultat trouvé } $group= $_SESSION['no_groupe']; // le nom du groupe d'utilisateur $query1 = "select no_fonc from autorisation_page where no_groupe='$group'"; // recherche le numéro de fonctionnalités à partir de numéro de groupe $execute = mysql_query($query1) or die (mysql_error()); // exécution de la requête while ($result1= mysql_fetch_row($execute)) { $affiche= chercher_nom_fonc($result1[0]); // pour chaque résultat de no_fonc nous cherchons le nom de fonctionnalités dans la table fonctionnalités if(strcmp($_SESSION['page'],$affiche)==0) // on compare avec la page actuelle, si ils sont égaux alors { $auto=1; // l'utilisateur a le droit d'accéder à cette page } } ?>
Et n'oubliez pas de mettre un session_start() entete de chaque page (-;
Bon, j'espère que ce petit script vous aide un peu pour comprendre l'intérêt de la variable $_SESSION. Si vous avez des questions n'hésitez pas de m'écrire au: sontung2603@yahoo.com
Salut ! ;-)