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 :

[Cookies] Undefined variable: PHPSESSID ? quel probleme ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 90
    Points : 39
    Points
    39
    Par défaut [Cookies] Undefined variable: PHPSESSID ? quel probleme ?
    Bonjour,

    Je viens d'installer easyphp chez moi et tente de monter un site web hébergé sur mon pc.

    Je voudrais utiliser les sessions, mais j'ai le message d'erreur suivant :
    Notice: Undefined variable: PHPSESSID in e:\projets\vehicules\include\session_verif.php on line 3
    Mes scripts fonctionnent pour un autre site hébergé chez FREE.

    J'ai bien renseigné mon chemin dans le PHP.ini pour sauvegarder les fichiers de sessions. Les variables globales sont à On (Off par défaut) mais je ne comprends pas cette erreur.

    Pourquoi cette variable n'existe pas ?

    J'exécute le script suivant sur chaque page pour vérifier si l'utilsateur peut ou non la consulter :
    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
     
    if( ! $PHPSESSID )
    {
    	header( "Location: /pages/pages_erreurs/404.php" );
    	exit();
    }
     
     
    session_start();
     
     
    if ( !isset( $_SESSION['identifiant'])  && !isset($_SESSION['ip'] ) )
    {
    	header( "Location: /pages/pages_erreurs/404.php" );
    	exit();
    }
    Merci

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Salut,
    il me semble que cette variable n'est renseignée que si le navigateur n'accepte pas les cookies, donc ajoute un isset() pour tester son existence. Je n'ai pas réussi a trouver la doc a la sujet donc ce n'est pas sur à 100%, reteste un coup en désactivant les cookies de ton navigateur.

    @+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Je ne vois vraiment pas l'utilité de tes 5 premières lignes.

    Si tu souhaites juste verifier que la session existe bien, ta seconde condition suffit.

    Si tu souhaites vérifier que la variable PHPSID est bien présente dans l'url (même si j'ai du mal à voir l'interet de faire une telle chose...), il faudra utiliser isset(). De plus, regarde comment est configuré register_global sur ton serveur : s'il est à off, il faudra utiliser $_GET['PHPSESSID'].

  4. #4
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Le PHPSSID est la constante contenant ton identifiant de SESSION.

    Ce qu'il faut savoir, c'est que dans les dernières versions de PHP, la transmission automatique de l'ID dans les URL contenu dans les liens interne au site n'est pas activé. (dans le PHP.ini, c'est la variable session.use_trans_sid qu'il faut regarder, et pas le register_global !!!)

    Donc, quand ton script te rejette l'erreur que le PHPSSID n'est pas defini, c'est que dans les liens internes, il ne reconnais pas le SID de la session ouverte !!!

    Méthode : soit mettre dans un PHP.ini le use_trans_id, ou bien mettre, à la fin de chacun de tes liens interne de ton site, la valeur du SID à la fin (php le reconnait automatiquement) exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "<a href='machin.php?".SID."'>lien</a>";
    Attention à ne mettre ton SID qu'à la fin de tes liens internes, le SID ne se transmet pas vers un autre nom de domaine !!!!

    pour plus d'info, va sur http://fr2.php.net/manual/fr/ref.session.php

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Le PHPSSID est la constante contenant ton identifiant de SESSION.
    Cet identifiant sera transmi par méthode GET, POST ou COOKIE.
    Aucune variable $PHPSID ne sera créée, à moins que le register_global soit à on (dans ce cas, elle sera égale à GET['PHPSID'], POST['PHPSID'] ou COOKIE['PHPSID'] selon la méthode choisie. Pour lire l'identifiant, il peut utiliser session_id() (après session_start, pour la lecture).


    Mais dans tous les cas, je reste persuadé que cette première condition est inutile... Si la session n'existe pas, $_SESSION['identifiant'] n'existe forcément pas... Donc ta seconde condition fait redondance avec la première.


    Sinon, viviboss, vu qu'il a activé les cookies, le problème ne semble pas provenir de la transmission de l'id de session.

  6. #6
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    De toute les facons, il ne faut pas utiliser les variable_global à on.

    Quant au SID, il peut y acceder tout simplement par.... SID, puisque c'est une constante. (bien évidemment, il est transmit par POST ou GET, mais de toute les facon il n'y a pas besoin d'y acceder, puisque PHP le gère tout seul !!!!)

    Pour verifier qu'une session existe, c'est clair que je pense qu'il n'y a que le isset()..... ou alors session_is_registred.

    Bref, oui sa variable n'est pas bien definit.

    A la limite : if(isset(SID)).....(et encore, je suis pas sur que ca marche.....)

Discussions similaires

  1. Probleme de "Undefined variable"
    Par roukgreg dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2010, 20h24
  2. cookie Undefined variable
    Par jesslegende dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2010, 00h37
  3. Probleme Undefined variable
    Par ChRom dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2007, 13h02
  4. [Cookies] Variable PHPSESSID avec session_start()
    Par licorne dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2007, 17h47
  5. Réponses: 3
    Dernier message: 22/09/2005, 12h24

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