Gestion du menu suivant le membre connecté - Toi y a être ADMIN toi y a droit !!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Gestion du menu suivant le membre connecté - Toi y a être ADMIN toi y a droit !!

par Jackisback » 09 oct. 2008, 10:53

Ouais c'est vrai vous avez raison ...

Surtout que je viens juste d'essayer de mettre le menu à la place du message et ça fonctionne nickel ...

Alors je ferme ...

Merci à vous tous ....

par charabia » 09 oct. 2008, 10:49

Je pense que tu peux mettre résolu, le principe étant strictement identique que l'affichage du message selon un cas ou un autre.

par Jackisback » 09 oct. 2008, 10:45

Bah je sais bien mais le sujet n'est pas terminé ...

Ma première question était:

"J'aimerais savoir ce que je dois rajouter et où de façon à ce que lorsqu'un membre se connecte il puisse accéder aux 3 menus ou j'ai écris RESERVE ADMIN ????"

Donc nous n'avons tjs pas perdu le fil de la discussion ... enfin je pense ...

Dans les quelques réponses précédentes, je voulais réussir à afficher un message de bienvenue pour l'admin et un autre si tu n'es pas admin ou pas logguer ...

Maintenant je reprends mon objectif premier qui était d'afficher un menu ou un autre suivant que tu es admin ou membre ...

Puisque maintenant l'affichage du message fonctionne correctement ...

par mere-teresa » 09 oct. 2008, 10:31

Modération :
Jackisback, si tu as une autre question ouvre un nouveau sujet,
cela te permettra d'avoir plus de réponses.

En plus, tu pourras mettre [Résolu] dès que ton problème évoqué ici sera réglé.

Merci de prendre le temps de lire les règlements.

par Jackisback » 09 oct. 2008, 09:59

Hello ...

Ce n'est pas encore résolu car maintenant il me reste à afficher dans mon menu les lignes actives pour les admin ou non ....

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par AB » 09 oct. 2008, 01:15

Et n'oublies pas de mettre session_start() pour pouvoir exploiter les variables de sessions. Cf mon dernier message dans ton topic http://www.phpfrance.com/forums/voir_reponse-265038.php

Au passage, si c'est résolu, penses à mettre résolu (idem pour tes autres topic). Cela permet d'indiquer à ceux qui font des recherches de savoir que le topic contient une solution :wink:

par Jackisback » 08 oct. 2008, 22:18

Oups ...

J'ai changé le code:

C'est bon ça fonctionne maintenant il ne me reste plus qu'à afficher les lignes en plus si tu es admin ou pas ....

merci

par charabia » 08 oct. 2008, 22:03

Tu as une erreur dans ton IF
if($_SESSION['grades'] == 1)

par Jackisback » 08 oct. 2008, 21:42

Ok donc j'ai fais le changement et là ça fonctionne bien par contre j'ai ce bout de script en debut de mes deux pages Menuindex.php et Menupages.php:
<!-- Vérification du grade du membre -->
<?php
if($_SESSION['grades'] = 1)
{
     echo 'Bienvenue à toi honorable admin';
}

else // Sinon
{
     $_SESSION['grades'] = 0; // S'il n'est que membre
	 echo 'Tu n\'es pas admin';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<link href="../Design/stylemenu.css" rel="stylesheet" type="text/css" />
</head>
Mais il m'affiche toujours "Bienvenue à toi honorable admin" ...

je pensais qu'il afficherait "tu n'es pas admin" à la première visite sur le site et une fois loggué "bienvenue ... admin"

comme ça en fonction du grade j'affiche ou non le menu qui correspond ...

Qu'est-ce qui cloche ???

par AB » 08 oct. 2008, 19:13

La requête du tuto ne compte que le nombre d'enregistrements correspondants à la clause de la requête. Rien d'autre.

Or dans ton cas, en même temps que d'identifier l'utilisateur il faut que tu récupère des champs. Par simplicité on peut les sélectionner tous en utilisant '*'.

Regarde les différences et les commentaires par rapport au code précédent
        // Requête pour récupérer les enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp posté dans le formulaire
        $requete = "SELECT * FROM membre WHERE inscr_pseudo = '".$nom."' AND inscr_pass = '".$password."'";  
    
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
    
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec); 

         // Les valeurs (si elles existent) sont retournées dans le tableau $resultat; 
         if (isset($resultat['inscr_pseudo'],$resultat['inscr_pass']))  

               {
                 session_start();
                 $_SESSION['inscr_pseudo'] = $pseudo;

                 // Si un champ 'grade' existe dans la bdd on l'enregistre dans  $_SESSION['grade'] sinon
                 // on affecte la valeur 0 (par exemple) à $_SESSION['grade']

                 $_SESSION['grade'] = isset($resultat['grade'])? $resultat['grade'] : 0;

                 //redirection vers la page que tu veux en cas de succès
                 header("Location: connexion_reussi.php");
                 exit();  
                }
                else
               {   // Le pseudo ou le mot de passe sont incorrect
                $message = 'Le pseudo ou le mot de passe sont incorrect';
                } 
De cette manière en même temps que d'identifier l'utilisateur tu récupère son grade dans $_SESSION['grade'] et tu pourrais récupérer d'autres champs de la même manière.

Dans ton code, $row['grades'] ne correspondait à rien du tout et c'est d'ailleurs bizarre que tu n'aies pas eu un message d'erreur à cette ligne.

par Jackisback » 08 oct. 2008, 13:12

Est-ce que ça le fait si je créér une page Menuindex-SPECIAL-ADMIN.php et une page Menupages-SPECIAL-ADMIN.php et je laisse les deux autres Menuindex.php et Manupages.php d'origine ...

Ainsi en fonction de :
if($_SESSION['grades'] == 1) 
Et bien je fais un include du menu qui va bien ???

Qu'en penses-tu, c'est peut etre un peu une usine à gaz que je suis en train de construire là non ???[/php]

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

EDIT:

Donc dans ma page formulaire_connex.php qui a ce code:
<?php
session_start();
// Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
header('Content-type: text/html; charset=UTF-8');

/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine) 
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
} 

// Initialisation du message de réponse
$message = null;

// Si le formulaire est envoyé
if (isset($_POST['inscr_pseudo'])) 
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['inscr_pseudo']) && trim($_POST['inscr_pseudo']) != '')? Verif_magicquotes($_POST['inscr_pseudo']) : null;
    $pass = (isset($_POST['inscr_pass']) && trim($_POST['inscr_pass']) != '')? Verif_magicquotes($_POST['inscr_pass']) : null;
    
    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass)) 
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "localhost";
         $database = "xxx";
         $username = "root";
         $password = "";
    
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());

         // Connexion à la base
         mysql_select_db($database, $connection);
    
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
         mysql_query("SET NAMES 'utf8'");
    
         // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
        
		// Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp posté dans le formulaire
        $requete = "SELECT count(*) as nb FROM membre WHERE inscr_pseudo = '".$nom."' AND inscr_pass = '".$password."'";  
	
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
    
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec); 

         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat; 
         if ($resultat['nb'] == 1) 
         // Résultat du comptage = 1 , le pseudo et le mot de passe sont correct
         {
             {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['inscr_pseudo']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['inscr_pseudo'] = $pseudo;
                 //redirection vers la page que tu veux en cas de succès
                 header("Location: connexion_reussi.php");
                 exit(); 
             }    
         }
         else
         {   // Le pseudo ou le mot de passe sont incorrect
             $message = 'Le pseudo ou le mot de passe sont incorrect';
         }
	}
}
?>
Ce que je dois changer ce trouve à ce niveau là:
/* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['inscr_pseudo']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['inscr_pseudo'] = $pseudo;
                 //redirection vers la page que tu veux en cas de succès
                 header("Location: connexion_reussi.php");
                 exit(); 
Et là je pourrais mettre:
/* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['inscr_pseudo']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
            if($row['grades'] == 1) // S'il est admin
           {
                $_SESSION['grades'] = 555;
           }
                else // Sinon
           {
                $_SESSION['grades'] = 666;
           }
                $_SESSION['inscr_pseudo'] = $pseudo;
                 //redirection vers la page que tu veux en cas de succès
                 header("Location: connexion_reussi.php");
                 exit(); 
Ca te parait pas trop bête ???

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

RE-EDIT:

J'ai ajouté ceci en début de page Menuindex.php et Menupages.php:
<!-- Vérification du grade du membre -->
<?php
if($_SESSION['grades'] = 555)
{
     echo 'Bienvenue à toi honorable admin';
}

else // Sinon
{
     $_SESSION['grades'] = 666; // S'il n'est que membre
	 echo 'Tu n\'es pas admin';
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<link href="../Design/stylemenu.css" rel="stylesheet" type="text/css" />
</head>

<body onload="MM_preloadImages('../Images/Structure/Bout_menu_select.gif')">
<!-- le onload permet de précharger l'image du bouton quand on est dessus ce qui évite au premier coup d'avoir un temps de latence -->
		<?php
		//echo $_GET['ecl'];
		if(empty($_GET['ecl']))
		{
			$ecl= 0 ;
		}
		else	{ 
				$ecl = $_GET['ecl'];
				}
		//echo $_GET['ecl']; 
		?>
    <ul>
      <!-- le # du href="#" est à remplacer par le lien qui va bien :-) -->
      <li><a href="Pages/Form_Connexion.php" target="_self">Connexion V.I.P</a><br/></li>
	  <li><a href="Pages/Dons.php" target="_self">Faire un don</a><br/></li>
	  <li><a href="Pages/Liste_Article_Admin.php" target="_self">Lister les articles - RESERVE ADMIN</a></li>
Mais il m'affiche tjs "Bienvenue à toi honorable admin" .... meme une fois firefox "purger" ....

Et si je met session_start il me remet le message d'erreur :

Code : Tout sélectionner

Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\Index.php:8) in C:\wamp\www\Menu\MenuIndex.php on line
As-tu une idée ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Jackisback » 08 oct. 2008, 08:04

Salut,

Et bien moi j'ai appelé ma colonne "grades" et les valeurs sont "ADMIN" ou "MEMBRE" mais je pense que "1" ou "0" sera plus simple tu as raison ...

Je vais essayer ça merci beaucoup de ton coup de main.

Bonne journée ... @ +

par djtec » 07 oct. 2008, 23:48

Y a plus simple qu'une requête sql.

Dans ta table membre tu fais un champ level et au moment de la connexion du membre du regarde quel est le level du membre et après tu fais:
<?php
if($row['level'] == 1) // S'il est admin
{
     $_SESSION['level'] = 1;
}
else // Sinon
{
     $_SESSION['level'] = 0;
}
?>
Puis pour ton menu tu fais:
<?php
if($_SESSION['level'] == 1)
{
     echo 'ton lien admin';
}
?>
Bien-sûr $row['level'] est à remplacer par ce que tu as déjà mit à la connexion.

par Jackisback » 07 oct. 2008, 23:20

Il faut que j'ajoute ce que tu m'as écris plus haut mais il faut peut etre que je fasse une requete en BDD pour aller chercher dans ma table membres tous les pseudo qui sont ADMIN ....

Qu'en penses-tu ???

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Jackisback » 07 oct. 2008, 16:24

C'est fait pour la BDD, j'ai ajouté une colonne grades et pour les differents membres j'ai ajouté soit "ADMIN" soit "MEMBRE"

Je vais passer au reste ...

Merci en tout cas