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] Variable PHPSESSID avec session_start()


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut [Cookies] Variable PHPSESSID avec session_start()
    Bonjour,

    J'utilise session_start() pour créer une session lors de l'accès au site que je développe.
    Ensuite je teste si la variable $PHPSESSID existe, c'est le nom de session donné dans le php.ini :
    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
    23
    function ctrl_session()
    {
    	if ($PHPSESSID)
    		session_start($PHPSESSID);
    	else
    		session_start(); 
     
    	// Teste l'initialisation de la variable ip
    	if(!isset($_SESSION['ipaddr'])) 
    	{ 
    	  $_SESSION=array(); 
    	  session_destroy(); 
    	  die(); 
    	} 
     
    	// Contrôle que la session utilise toujours la même adresse ip
    	if($_SERVER['REMOTE_ADDR']!=$_SESSION['ipaddr']) 
    	{ 
    	  $_SESSION=array(); 
    	  session_destroy(); 
    	  die(); 
    	} 
    }
    Je me suis aperçue que la variable PHPSESSID n'était jamais initialisée et qu'en conséquence lors de l'ouverture d'une autre page il exécutait toujours la 2è partie du test : session_start().

    Est-ce normal ?

    Merci pour vos suggestions.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    D'après la doc, le nom de la constante est SID :
    SID (chaîne de caractères)
    Constante contenant le nom de la session et l'identifiant en cours, sous la forme "name=ID" ou une chaîne vide si l'identifiant de session a été défini dans un cookie de session.
    Alternativement, vous pouvez utiliser la constante SID qui est définie si la session a commencé.
    J'en conclue donc qu'elle n'est disponible (ou bien qu'elle ne prend sa valeur) qu'après le session_start.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    La constante SID remplacerait donc $PHPSESSID ?

    D'après ce qu j'ai vu sur le net et mon php.ini, la propagation des identifiants de session sur mon site se fait via des cookies.
    Donc la commande session_start() sans identifiant de session suffit ?

    As-tu une idée sur la question ? Merci

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par licorne
    La constante SID remplacerait donc $PHPSESSID ?
    La constante SID est l'équivalent de sprintf('%s=%s', session_name(), session_id()). Semble-t-il disponible uniquement si on utilise la méthode session.use_trans_sid (aucun cookie) et après l'appel à session_start.
    "PHPSESSID" est le nom par défaut de la session (voir la fonction session_name()). (testé à l'instant sur une 5.2.1)

    Vous devriez positionner error_reporting à E_ALL

    Citation Envoyé par licorne
    Donc la commande session_start() sans identifiant de session suffit ?
    Oui (même pour la méthode use_trans_sid normalement).

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Merci beaucoup pour ces éclaircissements.

    Bonne fin de journée.

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

Discussions similaires

  1. [Cookies] variables de session avec JpGraph ?
    Par mnem0 dans le forum Langage
    Réponses: 8
    Dernier message: 04/06/2007, 14h05
  2. [Cookies] problème avec session_start
    Par tom42 dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2007, 14h25
  3. Réponses: 5
    Dernier message: 30/11/2006, 18h49
  4. [Cookies] Problème avec session_start
    Par philippef dans le forum Langage
    Réponses: 3
    Dernier message: 29/06/2006, 20h55
  5. Réponses: 1
    Dernier message: 07/06/2006, 17h14

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