Sessions ou pas ?

Petit nouveau ! | 1 Messages

09 juin 2009, 11:50

Bonjour, je susi en train de concevoir un site web dans lesquels des utilisateurs se verront attribuer des droits et donc des accès différents. Ces accès seront définit dans des grilles et chaque utilisateur sera relié à une grille.
Cette grille peut contenir une cinquantaine d'éléments du type:
- droit_ceci = 1
- droit_cela = 0

Plusieurs possibilités s'offrent à moi:
- lors du démarrage, je charge toute sa grille dans les variables de sessions

- a chaque chargement de page, je charge toute la grille et je regarde l'élément qui m'interesse pour la page

- a chaque chargement de page, je charge juste l'élément de la grille qui m'interesse et je regarde sa valeur pour voir si il a le droit ou non d'afficher la page

La premiere solution me parrait etre la meilleure, mais je ne sais pas si c'est bien d'enregsitrer beacuoup d'informations dans les variables de sessions

La seconde soltuion me parait interessant mais bouffe beaucoup de donnée car requete SELECT qui selectionne beaucoup de choses (50*2 valeurs)

La troisieme solution est moins couteuse en donnée que la seconde mais elle demande de faire du spécifique sur chaque page pour le chargement de la bonne donnée.


Je suis preneur de vos bons conseils :)
Merci d'avance

Eléphant du PHP | 245 Messages

09 juin 2009, 12:31

cela dépend de la structure des tables, mais j'imaginerai un truc du style :

1ere table droits : avec id_droits,nom_droits,..
2nde table utilisateur : id_utilisateur,login,....
3eme table autorisation_droits : id_autorisation,id_droit,id_utilisateur,fin_validite...

Et qd j'ai besoin de verifier un droit, j'utilise une requete :
$requete="select count(id_autorisation) from autorisation_droits where id_droit= $id_droit and id_utilisateur=".$_SESSION["id_utilisateur"];
on peut meme en faire une function
function verifie_droit_utilisateur(id_utilisateur,id_droit)
{
res=false;
$requete="select count(id_autorisation) from autorisation_droits where id_droit= $id_droit and id_utilisateur=".$_SESSION["id_utilisateur"];

/*****
placer ici l'execution des fnct accedant aux BDD
***/
$result=mysql_query($requete,...);
if($recap=mysql_fetch_rows($result)
{
if($recap[0]>0)$res=true;
}

return $res;
}