Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/04/2007, 09h54   #1
Membre habitué
 
Inscription : novembre 2003
Messages : 401
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 401
Points : 107
Points : 107
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 :
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.
licorne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 14h32   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
D'après la doc, le nom de la constante est SID :
Citation:
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.
Citation:
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h44   #3
Membre habitué
 
Inscription : novembre 2003
Messages : 401
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 401
Points : 107
Points : 107
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
licorne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 16h14   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 16h47   #5
Membre habitué
 
Inscription : novembre 2003
Messages : 401
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 401
Points : 107
Points : 107
Merci beaucoup pour ces éclaircissements.

Bonne fin de journée.
licorne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h08.


 
 
 
 
Partenaires

Hébergement Web