Différents menu suivant les droits

WrestlingMan Messages postés 78 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 17 février 2011 - 5 févr. 2010 à 08:38
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 5 févr. 2010 à 17:32
Bonjour !!
Petit problème se pose à moi, et malgré mes efforts de recherches sur google, je n'arrive pas à résoudre mon problème !!
Voilà ce que je veux faire : quand une personne iras sur mon site, suivant son login et mot de passe, il pourra accéder à un menu différent !!
Donc, je dois faire passer une variable résultant d'une requête à ma page d'accueil où je ferais un test pour savoir quel menu mettre à gauche !! Or, pour l'instant, si c'est l'un des mots de passe autorisé, il me charge systématiquement le même menu !!

Voici le code où je récupère ma variable :

Require("connect.php");

$login=$_POST["txt_login"];
$passe=$_POST["txt_passe"];

$sql="select * from t_identifiant where Login='$login'and MotDePasse='$passe';";
$retour=mysql_query($sql) or die ("erreur requête".$SQL);

if(mysql_num_rows($retour)>0)
{
while($retaray=mysql_fetch_array($retour))
{
session_start();
$_session['id_session']=session_id();
$_session['id_login']=$login;
$_session['id_passe']=$passe;
$droit=$retaray['NumDroits'];
header("location:accueil.php?droit=$droit");
}
}

Et voici le code où je réalise mon test :

<?php
session_start();
include('haut.php');
if(isset($_GET['droit']))
{
$droit=$_GET['droit'];
}

if($droit='2')
{
include('menu1.php');
}
elseif($droit='3')
{
include('menu2.php');
}
elseif($droit='4')
{
include('menu3.php');
}


if(isset($_GET['page']))
{
$page=$_GET['page'];
echo($page);
include($page.'.php');
}
else
{
include('droite.php');
}

Voilà, j'espère que vous pourrez m'aider !! ^^
Merci d'avance !!

8 réponses

jimmypage64 Messages postés 164 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 21 septembre 2010
5 févr. 2010 à 12:07
Salut,

Je ne te garantit pas que ça vient de la mais regarde du coté de ton session_start() que tu as positionné dans le while{}.

Une seule session ne être démarrée dans chaque page. De toute maniere ta session doit être démarrée sur la deuxieme ligne de ton Php (apres la balise <?php ). cf le Manuel Php

"Note: Pour utiliser des sessions basées sur les cookies, session_start() doit être appelée avant d'afficher quoi que ce soit dans le navigateur."


Voila ce que je peux deja te dire sur ton code.

Tiens moi au ocurant qi tu as du nouveau ...

@+



[8)]Zoso
0
WrestlingMan Messages postés 78 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 17 février 2011 1
5 févr. 2010 à 14:17
J'ai fait ce que tu m'as dit mais sa ne change rien !!
D'ailleur, je pense que l'erreur se trouve dans la page accueil car ma variable passe bien dans cette page !!
Donc c'est ce code qui cloche :

<?php
session_start();

include('haut.php');

if(isset($_GET['droit']))
{
$droit=$_GET['droit'];
}

if($droit='2')
{
include('menu1.php');

Si tu as une autre idée, n'hésite pas à m'en faire par !! En tout cas merci !!
}
elseif($droit='3')
{
include('menu2.php');
}
elseif($droit='4')
{
include('menu3.php');
}


if(isset($_GET['page']))
{
$page=$_GET['page'];
echo($page);
include($page.'.php');
}
else
{
include('droite.php');
}
?>
0
WrestlingMan Messages postés 78 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 17 février 2011 1
5 févr. 2010 à 14:18
dsl ya une page ki sè glisser entre mes lignes de code !! ^^ sa orait du etr a la fin !! mdr
0
jimmypage64 Messages postés 164 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 21 septembre 2010
5 févr. 2010 à 14:49
Tente avec $droit=='2' , $droit=='3', ...
parsque si tu en met qu'un, il me semble que tu fais une affectation ...

tiens moi au courant

[8)]Zoso
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WrestlingMan Messages postés 78 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 17 février 2011 1
5 févr. 2010 à 14:56
Merci beaucoup c'est sa !! C'est con, j'aurais dû y penser tout seul !! En effet, pour faire une comparaison, il faut utiliser == pour une égalité, != pour une différence et ! pour l'inverse!!
merci
^^
0
WrestlingMan Messages postés 78 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 17 février 2011 1
5 févr. 2010 à 16:12
Bon,
jimmypage64 je me permet de solliciter ton aide encore une fois !!
Tu avais raison à propos de la comparaison !! Mais un nouveau problème se pose à moi désormais ! Tout d'abord, voici mon code :
<?php
session_start();

include('haut.php');

if(isset($_GET['droit']))
{$var=$_GET['droit'];}

if($var=='2')
{include('menu1.php');}
elseif($var=='3')
{include('menu2.php');}
elseif($var=='4')
{include('menu3.php');}


if(isset($_GET['page']))
{
$page=$_GET['page'];
include($page.'.php');
}
else
{
include('droite.php');
}
?>
Cela marche !! Mon menu change effectivement en fonction de mon droit d'accès ! Le problème c'est que lorsque je clic sur un lien de mon menu, ce menu disparaît et j'ai 3 message d'erreur !! En gros, sa veut dire que ma variable $var est indéfini !! mais étant donnée que je n'en ai plus besoin, comment faire pour résoudre mon problème !! qu'une fois identifié le droit le menu ne change pas tant que l'on a pas quitter le site ??
Peux-tu m'aider ???
0
jimmypage64 Messages postés 164 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 21 septembre 2010
5 févr. 2010 à 17:08
Pour garder la valeur du droit dans toutes les pages jusqu'a la fin de la navigation, peut etre vaut il mieux que tu passe par une variable globale. Tu pourrait par exemple passer par un fichier externe 'globales.php' que tu incluerai dans toutes les pages et dans lequel tu declare toutes tes vaiables globales.

Voir manuel php -> $GLOBALS

Ou encore, et puisque tu utilise les sessions, pourquoi ne pas mettre ce droit dans ta session ?
Tu y accede dans toutes tes pages par $_SESSION['droit']; du coup ton $var n'a plus lieu d'être ...


[8)]Zoso
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
5 févr. 2010 à 17:32
Salut,

Ce ne doit pas être une simple recommandation : tu dois impérativement mettre 'droit' en session, ou par un autre biais, mais en aucun cas faire passer ça dans l'url, sinon tu n'as plus aucun sécurité.
Par exemple, si je n'ai le droit de ne consulter que le menu "menu1.php", mais que j'entre "accueil.php?droit=4" dans l'url que ce passe t il ??

Autre faille énorme de sécurité :
$login=$_POST["txt_login"];
$passe=$_POST["txt_passe"]; 

=> utilise mysql_real_escape_string() sur toutes les données POST ou GET

Cordialement,

Kohntark -
0