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 fonctionnalites 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éusltat dans un tableau *
* - Comparer l'égalité entre les valeurs reçues et les valeurs trouvée dans la base mysql *
* - Démarer le session si tout est ok *
***********************************************************************************************/
if ((isset($_POST['login'])) && (isset($_POST['pass']))) // si l'utilisateur se logue avec un compte et
{
$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'"; // selectionner tous les éléments dans la table user
$chercher=mysql_query($chercher_login) or die (mysql_error()); //exécution de la requete
if($result=mysql_fetch_array($chercher)) //si le réultat pour le compte utilisateur et mot de passe trouvé corespponds 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 group auquel l'utilisateur appartient
$search=mysql_query($search_group); // on lance la recherche!
$result_search=mysql_fetch_row($search); // on idexe 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] ; // enregister le statut de l'ulisateur
$_SESSION['id']= session_id(); // variable contenant l'ID de la session
$centre = "centre.php"; // si l'utilisatuer 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'entete de la page</td >
</tr> <!-- entete 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 foncton renvoie le nom de la fonctionnalites 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 requete
$result_cherche= mysql_fetch_row($go); // affecter les valeurs trouvé de la recherche dans un tableau
return $result_cherche[0]; // retourner le résultat trouvé
}
$group= $_SESSION['no_groupe']; // le nom du group 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 requete
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 fonctionnalites
if(strcmp($_SESSION['page'],$affiche)==0) // on compare avec la page actuelle, si ils sont égals alors
{
$auto=1; // l'utilisatuer 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 ! ;-)