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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 90
    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 chevronné
    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
    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.

    @+
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    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 émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    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
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    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 émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    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.....)
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

Discussions similaires

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

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