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 09/11/2007, 13h40   #1
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
Par défaut [Cookies] Disparition de variables de session

Salut,
J'ai un problème qui m'échappe totalement avec une session:
j'y ai mis les variables 'page' et 'langue', entre autre. Tout fonctionne en général, mais voilà:
(je ne donne pas tout le fonctionnement du site, ça serait un peu long)

il s'agit d'une page, avec insertion d'édition de contenu en formulaire POST, action="lememefichier.php"...
Tout en bas du document, je fais un print_r($_SESSION):
Code :
1
2
3
4
5
6
7
8
Array
(
    [authentification] => 1
    [langue] => fr
    [page] => projets
    [langue_projet] => fr
    [nom] => 11
)
C'est 'langue_projet' et 'nom' qui nous intéressent
Puis j'envoie le formulaire (submit), puis tout en haut du même document, je réaffiche ma session:
Code :
1
2
3
4
5
6
7
8
Array
(
    [authentification] => 1
    [langue] => fr
    [page] => projets
    [langue_projet] => 
    [nom] => 
)

je donne le seul code (il me semble) qu'il y aie entre les print_r, donc le début du document:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  //SCRIPT DE VALIDATION ET ENREGISTREMENT DE L'ÉDITION
session_start() ;
 
 
//DONNÉES À INCLURE:
include_once ('fonctions.php') ; //il n'y a que des fonctions...
//CONNEXION À LA BASE:
connexion_db() ; 
 
if (!empty($_POST) && $_SESSION['authentification'] == TRUE ){
 print_r($_SESSION); ...
le traitement du formulaire arrive ensuite, puis l'affichage de la page...
merci de votre aide...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 13h46   #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
register_globals ne serait pas sur On (cf phpinfo) et vous n'auriez pas des variables nommées $langue_projet et $nom dans l'un de vos scripts ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 13h53   #3
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
Citation:
Envoyé par julp Voir le message
register_globals ne serait pas sur On
non
Citation:
vous n'auriez pas des variables nommées $langue_projet et $nom dans l'un de vos scripts ?
je repêche ces infos pour les mettre dans
Code :
1
2
 $langue = $_SESSION['langue_projet'] ;
    $nom = $_SESSION['nom'] ;
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 14h56   #4
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
il me vient une idée:
En fait, tout cela se passe dans un pop-up, est-ce que ça joue un rôle pour les session? En tous les cas webdevelopper me montre le même cookie sur la fenêtre principale et sur le pop-up...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 16h00   #5
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
Ça me paraît peu probable puisqu'elles seraient toutes affectées en ce cas. Y aurait-il une confusion entre les opérateurs == et =), une condition erronée menant à un écrasement de la variable, autres ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 16h31   #6
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
non, pas de confusion du genre...
Mais j'ai avancé, en analysant ce qui se passe au niveau du fichier de session (/var/lib/php5/sess_xxxxxx sur linux)... je récapitule les événements:
  1. j'ouvre mon pop-up. les infos 'langue' et 'nom' sont transmisent par url ($_GET)
  2. elles sont ensuite récupérée dans $langue et $nom, puis utilisée pour la requête sql... pas de souci. Elles sont ensuite attribuée à la session ($_SESSION['nom'] = $nom etc.)(c'est parce qu'en mode édition, on navigue avec les formulaires... )
  3. à la fin du script (après le chargement de la page: selon la doc de PHP5, la super-globale est enregistrée dans le fichier en fin de script), elles sont bien présentes dans le fichier de session
  4. je clique sur un submit, qui renvoie sur la même page (action="lapage.php"), la page se charge correctement, en reprenant les valeurs dans la session ($langue = $_SESSION['langue_projet'])
  5. à la fin de la page, print_r($_SESSION) affiche bien les valeurs
  6. !!!Mais dans le fichier de session, elles ont disparue!!! Et il va de soi qu'après un autre submit, elles n'apparaissent plus dans le print_r, et la page se charge sans contenu...
Question: pourquoi???
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 16h43   #7
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
encore un pas en avant...
Apparemment PHP n'aime pas qu'on ecrase une valeur de session avec la même. En effet:
J'ai commenté le point 2 après le premier chargement de la page (donc ils ont bien été attribué une fois)
Code :
1
2
//$_SESSION['nom'] = $nom ;
//$_SESSION['langue_projet'] = $langue ;
Et là, pas de problème... les deux infos restent dans le fichiers de session

Question: pourquoi?
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 14h20   #8
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
Bon, j'ai changé (pour d'autres raisons) l'ordre des occurrences citées, et ça fonctionne... mais j'ai beau refaire le chemin dans tous les sens, je ne comprends pas...
Enfin, RESOLU
BlindeKinder 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 00h45.


 
 
 
 
Partenaires

Hébergement Web