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 29/11/2006, 23h30   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 91
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 91
Points : 11
Points : 11
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 :
Citation:
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 :
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
nerick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 13h57   #2
Membre éclairé
 
Avatar de genova
 
Inscription : septembre 2004
Messages : 487
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 487
Points : 397
Points : 397
Envoyer un message via MSN à genova
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.
genova est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 17h56   #3
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
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'].
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 18h16   #4
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
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 :
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 18h25   #5
Futur Membre du Club
 
Inscription : avril 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 38
Points : 18
Points : 18
Citation:
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.
Jukien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 18h49   #6
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h30.


 
 
 
 
Partenaires

Hébergement Web