IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Menu sessions différents avec IF et ELSE


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Points : 34
    Points
    34
    Par défaut Menu sessions différents avec IF et ELSE
    Bonjour,

    J'ai donc une page qui affiche des données publiques, qui peuvent etre vues par tout le monde mais qui concerne une personne inscrite. Mais j'aimerais afficher un menu qui diffère si la personne est loggué ou ne l'est pas ou encore si elle est loggué mais que ce n'est pas sa page.

    Si je mets un session_start en haut du code, il faudra alors que la personne s'inscrive au préalable pour pouvoir la lire. Or, c'est une page avec un contenu publique.

    Voici clairement ce que j'aimerais faire :

    IF la personne est loggué et le contenu de cette page est le sien --> on affiche un menu pour qu'elle puisse editer ses informations.
    ELSEIF la personne est loggué mais le contenu de cette page n'est pas le sien --> on affiche un menu pour qu'elle puisse mettons ajouter cette personne a ses contacts
    ELSE la personne est pas loggué --> on affiche un menu avec "s'inscrire" ou encore "login".

    En somme ce que je cherche à faire c'est affiché un menu dynamiquement par rapport à la session de la personne.


    Pouvez-vous m'aiguiller ?

    Merci par avance.

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Comme tu as fait l'algorithme, il ne reste plus qu'à traduire çà dans le langage, aussi, l'inclusion de session_start() n'oblige pas un internaute à s'identifier si tu ne lui demandes pas, cela a simplement pour effet de créer une session sur le serveur associé à l'utilisateur courant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php session_start(); // en haut de page avant tout envoi de text/html ?>
    // <html>...<body>
    if(isset($_SESSION['user']) && $currentPage->author == $_SESSION['user']){
        include('menu_admin_page.php');
    }
    elseif((isset($_SESSION['user']) && $currentPage->author != $_SESSION['user']){
        include('menu_base.php');
    }
    else{
        include('user_form.php');
    }
    Les include inclus respectivement un menu pour administrer sa propre page, un menu permettant d'ajouter un utilisateur à ses amis (ou tout autre action possible entres utilisateurs) et un formulaire de connexion / inscription.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Points : 34
    Points
    34
    Par défaut
    Alors,

    J'ai donc essayé votre code en l'adaptant à ma situation.

    J'arrive a identifier l'utilisateur mais pas comme etant l'admin de sa page. Il s'identifie seulement sur le ELSEIF.
    Ma session user se nomme clash_user j'ai donc adapté votre code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		if(isset($_SESSION['clash_user']) && $currentPage->author == $_SESSION['clash_user']){
        echo 'admin logged';
    }
    elseif(isset($_SESSION['clash_user']) && $currentPage->author != $_SESSION['clash_user']){
        echo 'simple user logged';
    }
    else{
        echo 'aucun loggin';
    }
    J'ai mis des echo à la place des include pour tester dans un premier temps.

    J'ai aussi une erreur curieuse en haut de la page:
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/zegore/public_html/test/user.php:1) in /home/zegore/public_html/test/user.php on line 3
    simple user logged
    On voit bien qu'il lit le echo du ELSEIF au lieu du echo du premier IF, alors que je suis bien logger.

    Voici le début du code de la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    	   <?php
    	   session_start();
    		if(isset($_SESSION['clash_user']) && $currentPage->author == $_SESSION['clash_user']){
        echo 'admin logged';
    }
    elseif(isset($_SESSION['clash_user']) && $currentPage->author != $_SESSION['clash_user']){
        echo 'simple user logged';
    }
    else{
        echo 'aucun loggin';
    }
    		require 'fonctions.inc.php';
    // inclure le fichier connexion db.
    require '../../connect.inc.php';
    $nick = mysql_real_escape_string($_GET["nick"]);
    // ...

    Avez-vous une idée ?

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,
    headers already sent
    signifie que la fonction session_start(); a déjà été appelée où que du texte ou du html à déjà été généré.

    Ce script est-il déjà inclu dans une page qui appelle elle-même session_start() ? Si c'est le cas tu peux retirer cette fonction du script.
    Si ce script est inclu dans une page qui n'appelle pas session_start() alors supprime cette fonction de ton script et met la en tête de ton autre page. (fiou)



    Aussi, que représentes $currentPage->author pour toi ? Je l'avais mis à titre d'exemple afin que tu saches qu'il faut comparer l'utilisateur auteur de la page courante avec l'utilisateur qui la visite.

    La variable $nick représente-t-elle l'auteur de la page ?

    Si oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    require 'fonctions.inc.php';
    require '../../connect.inc.php';
     
    $nick = mysql_real_escape_string($_GET["nick"]);
     
    if(isset($_SESSION['clash_user'])){
        if($nick == $_SESSION['clash_user']){
            echo 'admin logged';
        }
        else{
            echo 'simple user logged';
        }
    }
    else{
        echo 'aucun loggin';
    }
    J'ai apporté une légère modification au code, je faisais deux fois la même condition.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Votre code m'est bien plus clair comme cela, je vous remercie d'être revenu dessus, dorénavant cela fonctionne très bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gérer des profils différents avec des sessions PhP
    Par phildur dans le forum Langage
    Réponses: 4
    Dernier message: 08/03/2011, 16h47
  2. Réponses: 4
    Dernier message: 14/09/2005, 21h39
  3. Déverrouiller une session XP avec Delphi
    Par cchatelain dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/05/2005, 08h21
  4. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36
  5. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo