8797 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai dans ma BDD un colonne "GRADES" qui permet de définir si 1 tu es ADMIN si 0 tu es MEMBRE.

Et j'ai ce script qui m'affiche le menus correspondant au grade:

<?php
if($_SESSION['grades'] == 1) // S'il est ADMIN
{
include ('Menuindex-ADMIN.php');
}
	elseif($_SESSION['grades'] = 0) // S'il n'est que MEMBRE
	{
	include ('Menuindex-MEMBRES.php');
	} 
		else // Sinon s'il n'est NI membre, NI admin
		{
		$_SESSION['grades'] != ' ';
		include ('Menuindex-VISITEURS.php');
		}
?>


Quand j'arrive sur ma page d'accueil il m'affiche le "Menu-VISITEUR" --> Ca c'est OK
Quand je me loggue ADMIN il m'affiche le "Menu-ADMIN" --> Ca c'est OK
MAIS quand je me loggue MEMBRE, il m'affiche le "Menu-VISITEUR" ...

Quelqu'un aurait-il une idée sur ce que je dois changer ???

--------------------

EDIT:

Et quand je change qqchose dans le ELSEIF, il m'affiche le "Menu-MEMBRES", donc là c'est OK MAIS DU COUP quand je suis simple visiteur (après avoir détruit la session) il m'affiche tjs le "Menu-MEMBRES" au lieu du "Menu-VISITEURS" ...

--------------------

RE-EDIT:

Et avant j'avais ce script qui fonctionnait bien mais pour admin ou membres:

<?php
if($_SESSION['grades'] == 1)
{
include ('Menupages-ADMIN.php');
}
	else // Sinon
	{
     $_SESSION['grades'] = 0; // S'il n'est que membre
	include ('Menupages-MEMBRES.php');
	}
	?>


J'ai eu besoin de rajouter l'option VISITEURS et là ça déconne ...
Modifié par Jackisback (24 Oct 2008 - 12:06)
Salut,

problème basique :


elseif($_SESSION['grades'] [b]=[/b] 0) // S'il n'est que MEMBRE
Oui je pense bien que ça vient de là mais je n'arrive pas à trouver l'astuce ...

J'ai essayé plusieurs script mais toujours le meme resultat ....
Oui mais le fait qu'un VISITEUR n'ai pas de grade, il vaudrait peut etre mieux que j'écrive qqchose dans ce genre là:

		else // Sinon s'il n'est NI membre, NI administrateur
		{
		$_SESSION['inscr_pseudo'] = ' ';
		include ('Menuindex-VISITEURS.php');
		}


Qu'en pensez-vous ???

Si il n'est pas loggué il n'y a pas de variable "INSCR_PSEUDO" donc hop le "Menu-VISITEUR" ??

Je suis dans la bonne direction ?
Oops, tu n'as pas capté ce que Thanh souhaitait te faire remarquer :

En l'état, tu testes si l'affectation de la valeur 0 à $_SESSION['grades'] est effective (ce qui est le cas).

Alors que tu cherches à comparer deux valeurs (savoir si $_SESSION['grades'] est égale à 0). Soit :

elseif($_SESSION['grades'] =[b]=[/b] 0) // S'il n'est que MEMBRE


Il te manques un signe = pour vérifier cette égalité. Smiley cligne
Désolé j'aurais du le marquer mais j'ai essyaé ça aussi et ça ne fonctionne pas du tout ... il m'affiche le "Menu-MEMBRES" quand j'écris ==

Je pense que le soucis pourrait se situer ici:

		else // Sinon s'il n'est NI membre, NI administrateur
		{
		$_SESSION['grades'] = ' ';
		include ('Menupages-VISITEURS.php');
		}


Il en manque un bout je pense ...

Je dis ELSE ensuite je DECLARE une variable et ensuite un INCLUDE, il me semble qu'il me faudrait une condition ici aussi ... non ??

------------------

EDIT:

J'ai modifié mon code comme cela:

<?php
if($_SESSION['grades'] == 1) // S'il est ADMINISTRATEUR
{
include ('Menuindex-ADMIN.php');
}
	elseif($_SESSION['grades'] == 0) // S'il n'est que MEMBRE
	{
	include ('Menuindex-MEMBRES.php');
	} 
		else // Sinon s'il n'est NI membre, NI administrateur
		{
		echo 'coucou visiteur';
		}
?>


J'ai ensuite essayé de mettre la valeur ==1 à ==0 et inversement et il m'affiche correctement le menu correspondant.

Par contre dès que je supprime la session, il m'affiche le "Menu-MEMBRES" ... encore et toujours ...
Modifié par Jackisback (24 Oct 2008 - 11:41)
Pour le "else" non c'est OK.

Si les 2 premières conditions ("Administrateur" et "Membre") sont fausses cela signifie qu'il n'y a plus qu'une seule solution ("Visiteur" donc un "else").

Si tu as suivi la remarque de Thanh sur le "==" et que cela ne fonctionne toujours pas c'est qu'il s'agit d'un autre problème es-tu sûr que ta variable $_SESSION['grades'] est bien valorisée comme il faut (selon les spécificités établies) ?
J'ai résolu le problème, dans ma BDD j'ai changé le numéro correspondant au grade MEMBRES, j'ai mis 5 au lieu de 0 et là ça fonctionne nickel ...

1ere visite -> MENU-VISITEUR
log membre -> MENU-MEMBRES
log admin -> MENU-ADMIN ..

Tout est ok

Je remets le code final si ça peux servir à quelqu'un ..

Merci encore pour votre aide ...

<?php
echo $_SESSIONS['grades'];
if($_SESSION['grades'] == 1) // S'il est ADMINISTRATEUR
{
include ('Menuindex-ADMIN.php');
}
	elseif($_SESSION['grades'] == 5) // S'il n'est que MEMBRE
	{
	include ('Menuindex-MEMBRES.php');
	} 
		else // Sinon s'il n'est NI membre, NI administrateur
		{
		include ('Menuindex-VISITEURS.php');
		}
?>