8792 sujets

Développement web côté serveur, CMS

Bonjour,
j'ai un petit soucis avec une variable de session.
je suis en train de faire un site ou il y a different type d'utilisateur:
lecteur, redacteur, modo et admin
chaque groupe doit avoir un menu particulier et des fonctions particulière

Mon soucis est le suivant : quand un lecteur, un redacteur ou n'importe quel utilisateur de n'importe quel groupe se connecte :
il obtient toujours le meme menu et la variable "type" prend la valeur lecteur....

voila le code du menu, je pense que le pb vient de la car quand je demande, sur la page d'accueil apres le login, d'afficher la variable type: il me recupere bien le type de l'utilisateur


<?
if ( !isset( $_SESSION['nom'] )) { // si on n'est pas connecté	
	include ("menu_gene.php"); //menu général
		} 
elseif 
			(( $_SESSION['nom'] != null ) &&  ($_SESSION['type'] = 'lecteur' )) // si on est connecté et si c'est un lecteur
			{
			include ("menu_lecteur.php"); //menu lecteur
			}
			elseif 
				 (( $_SESSION['nom'] != null ) &&  ($_SESSION['type'] = 'redacteur' )) // si on est connecté et si c'est un  redacteur
				{include ("menu_redacteur.php"); //menu redacteur
				}
				elseif 
					 (( $_SESSION['nom'] != null ) &&  ($_SESSION['type'] = 'modo' )) // si on est connecté et si c'est un modo
					{include ("menu_modo.php"); //menu modo
					}
						else 
						{if (( $_SESSION['nom'] != null ) &&  ($_SESSION['type'] = 'admin' )) // si on est connecté et si c'est un 
							include ("menu_admin.php"); //menu admin
							}
?>



en gros : je me log avec un redacteur : sur la page d'accueil apres le log il me dit bien : bonjour "Nom" vous êtes un "redacteur"
mais il m'affiche le menu pour un lecteur et si je fais un refresh j'ai
bonjour "Nom" vous êtes un "lecteur"

merci de vos lumieres^^
Modifié par valin (07 May 2007 - 16:34)
Salut

Tu dois utiliser le symbole '==' pour tester l'égalité de 2 valeurs. Par exemple,
if ($_SESSION['type'] == 'lecteur') : ... 
En utilisant '=', tu assignes la valeur à la variable, au lieu de tester l'égalité. Alors forcément, après la première condition, $_SESSION['type'] vaut toujours 'lecteur' Smiley smile

Edit : non, finalement, pas d'edit, "c'était juste une connerie" Smiley lol
Modifié par Thomas D. (07 May 2007 - 15:58)
Salut valin,

Ton problème provient de tes elseif. En effet, tu as oublié un = dans le test $_SESSION['type'] = 'lecteur' (idem avec tous les autres tests).
Donc au final au lieu de faire une comparaison, tu attributs à la session type, une nouvelle valeur qui est "lecteur".

Petite astuces pour eviter ce genre de désagréments : Inverser les tests. Par exemple, dans ton cas, tu peux faire : 'lecteur' == $_SESSION['type'].
Ainsi, si tu oublies un signe =, tu auras une erreur php car il est impossible d'attribuer une variable à une chaine de caractère. (fonctionne également avec les boolean, les entiers, les float, etc...)

Bonne continuation Smiley cligne

EDIT : Décidemment, ça fait la seconde fois que je me fais doublé dans la ligne droite des réponse. Smiley bawling Smiley langue . Il va falloir que je fasse un stage dactilo. Smiley lol
Modifié par ymhotepa (07 May 2007 - 15:54)
ymhotepa a écrit :
EDIT : Décidemment, ça fait la seconde fois que je me fais doublé dans la ligne droite des réponse. Smiley bawling Smiley langue . Il va falloir que je fasse un stage dactilo. Smiley lol

Y'a des jours, comme ça Smiley cligne

Par contre, ton astuce d'inverser les variables est intéressante pour les distraits Smiley smile
Thomas D. a écrit :
Salut

Tu dois utiliser le symbole '==' pour tester l'égalité de 2 valeurs. Par exemple,
if ($_SESSION['type'] == 'lecteur') : ... 
En utilisant '=', tu assignes la valeur à la variable, au lieu de tester l'égalité. Alors forcément, après la première condition, $_SESSION['type'] vaut toujours 'lecteur' Smiley smile

Edit : non, finalement, pas d'edit, "c'était juste une connerie" Smiley lol



rhaaa le **** ^^
dire que j'ai fais des tonnes de test avec des switch des elseif et la solution etait toute simple snif

je teste cela et je vous confirme ^^

merci du coup d'oeil externe
merci de la petite astuce Smiley smile ca peut servir vu que je suis assez distrait Smiley langue ymhotepa

edit: c'etait bien cela Smiley sweatdrop piuff j'ai sué pour une broutille snif
Modifié par valin (07 May 2007 - 16:04)