par
agité » 28 févr. 2008, 11:46
Bonjour,
Comme j'utilise pas mal de variables de session que je test au long de mon site, je me demandais s'il n'éxistait pas de méthode POO plus "pro" que simplement gerer a la connection et mettre un $_SESSION['Rank'] et $_SESSION['User_profil'].
Par exemple la j'ai fais une table utilisateur :
Code : Tout sélectionner
CREATE TABLE `user` (
`Id` int(11) NOT NULL auto_increment,
`Civilite` enum('Mr','Mme','Mlle') collate utf8_unicode_ci NOT NULL default 'Mr',
`Nom` varchar(50) collate utf8_unicode_ci NOT NULL,
`Prenom` varchar(50) collate utf8_unicode_ci NOT NULL,
`Identifiant` varchar(20) collate utf8_unicode_ci NOT NULL,
`motdepasse` blob NOT NULL,
`Observations` text collate utf8_unicode_ci NOT NULL,
`Id_user_profil` int(10) NOT NULL,
`Id_superieur` int(5) default NULL,
`Id_secteur1` int(11) default NULL,
`Id_secteur2` int(11) default NULL,
PRIMARY KEY (`Id`),
KEY `rang` (`Id_user_profil`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
Donc dans cette table je stock des Id commer l'Id de l'utilisateur supérieur ou celui des 2 secteurs ou il a accès.
Maintenant lorsque je créer mon menu je voudrais qu'en fonction de son rang l'utilisateur en vois une partie ce que j'ai résolu comme ca :
<?php
if( ( $_SESSION['Rank'] == 0 ) or ( $_SESSION['Rank'] == 1 ) or ( $_SESSION['Rank'] == 2 ) or ( $_SESSION['Rank'] == 3 ))
{
include("menu_0.php");
}
if($_SESSION['Rank'] == 0)
{
include("menu_1.php");
}
?>
Ensuite sur chaque page je fais une vérification :
<?php
session_start();
//Redirection de l'utilisateur s'il n'est pas log.
if(!isset($_SESSION['session_id']))
{
header("location: ../index.php?url=".$_SERVER["REQUEST_URI"]);
}
include($_SERVER["DOCUMENT_ROOT"].$_SESSION['Base_url']."/_includes/php/session.php");
include($_SERVER["DOCUMENT_ROOT"].$_SESSION['Base_url']."/_includes/php/admin/functions.php");
EstUtilsateurAdmin($_SESSION['Rank']);
?>
Je verrifie si l'utilisateur est identifié puis je fais une fonction EstUtilisateurAdmin, pour la partie administration :
function EstUtilsateurAdmin($Rang)
{
switch($Rang)
{
case 0 :
$Acces = "Ok";
break;
case 1 :
$Acces = "Nok";
break;
case 2 :
$Acces = "Nok";
break;
case 3 :
$Acces = "Nok";
break;
case 4 :
$Acces = "Nok";
break;
case 5 :
$Acces = "Nok";
break;
return $Acces;
}
if($Acces == "Nok"){header("location: ../accueil.php?Erreur=InvalidRank");}
}
Une fois que j'ai trouvé les droits je voudrais que dans les partis accessible en fonction de son Id_secteur1 et Id_secteur2 il m'affiche le bon menu. Et aussi j'aimerais passer sur une methode moins "a l'arrache" pour gerer les rangs.
Une idée ?
Bonjour,
Comme j'utilise pas mal de variables de session que je test au long de mon site, je me demandais s'il n'éxistait pas de méthode POO plus "pro" que simplement gerer a la connection et mettre un $_SESSION['Rank'] et $_SESSION['User_profil'].
Par exemple la j'ai fais une table utilisateur :
[code]CREATE TABLE `user` (
`Id` int(11) NOT NULL auto_increment,
`Civilite` enum('Mr','Mme','Mlle') collate utf8_unicode_ci NOT NULL default 'Mr',
`Nom` varchar(50) collate utf8_unicode_ci NOT NULL,
`Prenom` varchar(50) collate utf8_unicode_ci NOT NULL,
`Identifiant` varchar(20) collate utf8_unicode_ci NOT NULL,
`motdepasse` blob NOT NULL,
`Observations` text collate utf8_unicode_ci NOT NULL,
`Id_user_profil` int(10) NOT NULL,
`Id_superieur` int(5) default NULL,
`Id_secteur1` int(11) default NULL,
`Id_secteur2` int(11) default NULL,
PRIMARY KEY (`Id`),
KEY `rang` (`Id_user_profil`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;[/code]
Donc dans cette table je stock des Id commer l'Id de l'utilisateur supérieur ou celui des 2 secteurs ou il a accès.
Maintenant lorsque je créer mon menu je voudrais qu'en fonction de son rang l'utilisateur en vois une partie ce que j'ai résolu comme ca :
[php]<?php
if( ( $_SESSION['Rank'] == 0 ) or ( $_SESSION['Rank'] == 1 ) or ( $_SESSION['Rank'] == 2 ) or ( $_SESSION['Rank'] == 3 ))
{
include("menu_0.php");
}
if($_SESSION['Rank'] == 0)
{
include("menu_1.php");
}
?> [/php]
Ensuite sur chaque page je fais une vérification :
[php]<?php
session_start();
//Redirection de l'utilisateur s'il n'est pas log.
if(!isset($_SESSION['session_id']))
{
header("location: ../index.php?url=".$_SERVER["REQUEST_URI"]);
}
include($_SERVER["DOCUMENT_ROOT"].$_SESSION['Base_url']."/_includes/php/session.php");
include($_SERVER["DOCUMENT_ROOT"].$_SESSION['Base_url']."/_includes/php/admin/functions.php");
EstUtilsateurAdmin($_SESSION['Rank']);
?>
[/php]
Je verrifie si l'utilisateur est identifié puis je fais une fonction EstUtilisateurAdmin, pour la partie administration :
[php]function EstUtilsateurAdmin($Rang)
{
switch($Rang)
{
case 0 :
$Acces = "Ok";
break;
case 1 :
$Acces = "Nok";
break;
case 2 :
$Acces = "Nok";
break;
case 3 :
$Acces = "Nok";
break;
case 4 :
$Acces = "Nok";
break;
case 5 :
$Acces = "Nok";
break;
return $Acces;
}
if($Acces == "Nok"){header("location: ../accueil.php?Erreur=InvalidRank");}
}
[/php]
Une fois que j'ai trouvé les droits je voudrais que dans les partis accessible en fonction de son Id_secteur1 et Id_secteur2 il m'affiche le bon menu. Et aussi j'aimerais passer sur une methode moins "a l'arrache" pour gerer les rangs.
Une idée ?