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 :

variable session depuis toutes les pages


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Points : 91
    Points
    91
    Par défaut variable session depuis toutes les pages
    bonjour,

    Je suppose que si on utilise une variable session dans une page, cette varaible sera accessible depuis toutes les autres pages du sites ?

    J'ai une variable session _Session['user']=$utilisateur que je crée sur la page de login.ophp, mais quand je teste sur les les autres pages pour savoir si cette variable existe, j'ai le message: undefine varible.

    y a t-il quelque chose que je dois configurer ?
    Merci de votre aide,

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    C'est peut être une erreur de frappe de ta part, mais une session se déclare de la façons suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?PHP
    $utilisateur = "dlteck2000";
    $_SESSION['user'] = $utilisateur;
    ?>
    Quand tu veux récupérer ta session sur une autre page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?PHP
    session_start();
    print "Pseudo : ".$_SESSION['user'];
    ?>

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Points : 91
    Points
    91
    Par défaut
    Merci Dlteck2000 pour la répose,

    j'ai bien fait: $_Session['user']=$utilisateur;

    quand je suis dans la même page ça fonctionne bien mais, une fois dans une autre pas je ne sais plus recuperer la valeur de la session.

    Merci pour vos idées.

  4. #4
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Fait un session_start() en début de page.

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Points : 91
    Points
    91
    Par défaut
    Merci de la réponse,

    Est-ce qu'en faisant session_start() au début de chaque page ou je veut recuperer la session , les variables sessions ne seront pas reinitialisées à vides ?

    Merci de vos idées,

  6. #6
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 153
    Points
    153
    Par défaut
    bonjour,

    si tes variables session sont crées sur une page dont le nom est par exemple:
    index.php et que tu veux récupérer ces variables dans une autre page et bien tu dois écrire en haut de cette page:
    <?php include ('index.php');?>

    @+++++++

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Points : 91
    Points
    91
    Par défaut
    Merci gerald57,

    je vais essayer de le faire.

    Au fait j'ai crée un site avec un formulaire d'identification(login).

    Mon but est pouvoir tester sur les auttres pages que le visiteur s'est loggé pour ne plus plus afficher le formulaitre de login en haut à droite mais plutot le message:"Utilisateur Connecté"+ un lien de Deconnexion(logout.php).

    Y ail un moyen plus simple de faire que de passer par les sessions ?

    Merci d'avance,

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Non,

    Les session sont super simple, je vois pas comment on peut faire plus simple

    Pour ton problème de sessions, l'idéal et de te faire un petit fichier 'header.php' par exemple ou tu place tous les includes indispensables, classes, fonctions, configurations et le fameux session_start()

    Ça t'évitera de retaper la même chose sur toute les pages.

    A chaque nouvelles pages tu n'aura qu'a faire un include ('header.php')
    Cette technique est valable si tu ne recharge pas l'index à chaque fois.

    Si tu as qu'une page (index.php) avec un include pour chaque pages, inutile d'inclure ton header.php sur chaque pages, mais uniquement sur la page d'index.

    Je sais pas si je suis bien clair là

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Est-ce qu'en faisant session_start() au début de chaque page ou je veut recuperer la session , les variables sessions ne seront pas reinitialisées à vides ?
    Non session_start ne fait que initialiser la session.

    Si tu veux détruire une session, voila ce qui est conseillé sur la doc php (php.net) :

    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
    19
    20
    21
    22
     
    <?php
     
    // Initialisation de la session.
    // Si vous utilisez un autre nom
    // session_name("autrenom")
    session_start();
     
    // Détruit toutes les variables de session
    $_SESSION = array();
     
    // Si vous voulez détruire complètement la session, effacez également
    // le cookie de session.
    // Note : cela détruira la session et pas seulement les données de session !
    if (isset($_COOKIE[session_name()])) {
        setcookie(session_name(), '', time()-42000, '/');
    }
     
    // Finalement, on détruit la session.
    session_destroy();
     
    ?>

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Points : 91
    Points
    91
    Par défaut
    Merci Dlteck2000 pour ton temps,

    j'ai bien compris.

    Au fait je voudrais réaliser la même chose que le site www.developpez.net.

    si le visiteur s'identifie bien, le formulaire d'identification n'apparaitra plus. En place lieu du formulaire: Bienvenue +le nom du visiteur + le message connecté+le lien Deconnexion.

    Et cei reste aussi lontemps que la session n'a pas expiré ou le visiteur n'a pas appuyer sur le lien econnexion

    Regarde un peu l'angle superieur droit de ce forum quand tu es connecté

    En plus moi je voudrais qu'à tout moment tester sit la session existe et est valable, si on est dans la zone administrateur du site afin d'autoriser les modifications du site.

    Excusez moi d'être long et embetant.

    Merci d'avance,

  11. #11
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    De manière très basique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($_SESSION['est_identif'] == 'oui') {
    //    ici le message de bienvenu et le reste...
    } elseif ((empty($_SESSION['est_identif'])) or ($_SESSION['est_identif'] == 'non')) {
    //   formulaire d'identification
    }
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    En plus moi je voudrais qu'à tout moment tester sit la session existe et est valable, si on est dans la zone administrateur du site afin d'autoriser les modifications du site.
    Pour ça il faut ajouter des statuts aux utilisateur.
    exemple :
    1 -> Administrateur
    2 -> Modérateur
    3 -> Membre
    4 -> Banni

    Quand tu ouvre la session après connexion, tu renseigne $_SESSION['statuts'] par exemple.

    Après t'a plus qu'a vérifier le statu de l'utilisateur pour voir si il a accès à l'admin ou pas

  13. #13
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Points : 91
    Points
    91
    Par défaut
    Merci vous tous pour vos explications, j'ai progressé quand même,

    Plus haut on me disait:

    si tes variables session sont crées sur une page dont le nom est par exemple:
    index.php et que tu veux récupérer ces variables dans une autre page et bien tu dois écrire en haut de cette page:
    <?php include ('index.php');?>
    Au fait ici c'est ma page login.php qui contient :$_SESSION['user'] = $utilisateur;

    Mais quand je l'inclue dans d'autres pages ou je voudrais recuperer cette valleur de la session , toute la structure de mon site change en ce sens la page login.php contient l'enetet, le pied la droite , la gauche du site, c'est juste le milieu qui change.

    Alors, comment acceder à cette variable session depuis n'importe quelle page du site, comme une variable global.

    Encore une fois merci.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    On te dis depuis le début de faire session_start(); inutile d'inclure ta page login.php, sauf si elle gère l'affichage du menu utilisateur.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/06/2013, 16h37
  2. variable accessible depuis toutes les sessions
    Par ravaza dans le forum Langage
    Réponses: 1
    Dernier message: 21/04/2008, 20h30
  3. Variable de session dans toute les pages
    Par Interface dans le forum Langage
    Réponses: 3
    Dernier message: 03/10/2007, 13h02
  4. variables globales pour toutes les pages
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 5
    Dernier message: 03/04/2007, 10h28
  5. Réponses: 3
    Dernier message: 12/05/2006, 12h34

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