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 17/09/2007, 13h50   #1
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
Par défaut Changement d'une variable de session via script PHP appelé par XMLHTTPRequest

Bonjour,
Je suis confronté à un problème étrange dont je n'arrive pas à trouver la solution (malgré le fait que je ne sois pas la seule mais aucune des autres conversations ne m'a aidé).
Donc voila : j'ai une variable de session $_session['var'] dans ma page principale que je modifie dans un script php appelé par ajax. La modification se fait bien dans le script mais n'est pas retourné à ma page principale (même après rafraichissement).
Comment cela se fait-il?

page principale :
Code :
1
2
3
4
5
 
<?php session_start();
$_SESSION['var']='';
?>
<input type="button" onclick="javascript:changement()"/>
script appelé par la fonction changement
Code :
1
2
3
4
5
 
<?php
session_start();
$_SESSION['var']=$var;
?>
Donc si je fais un var_dump de ma variable de session dans le script, ça me renvoie la bonne valeur.
Par contre dans ma page principale ça me retourne bool(false).

Merci beaucoup pour votre aide, je ne sais vraiment plus quoi faire!
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 14h27   #2
Membre du Club
 
Inscription : novembre 2004
Messages : 147
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 147
Points : 44
Points : 44
hello,
si tu rafraichis ta page c'est normal que $_session['var'] soit toujours vide car tu l'initialises à chaque fois.

essaye :

Code :
1
2
3
4
5
6
<?php session_start();
if(!isset($_SESSION["var"]))
{
$_SESSION['var']='';
}
?>
wehtam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 09h44   #3
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
Merci de m'avoir répondu,

J'ai donc supprimé le raffraichissement de la page et, comme tu me l'as conseillé je verifie si ma variable est initialisé avant de la reinitialiser.
Cependant , j'ai toujours le même problème.
J'ai tenté ça mais ça ne marche pas :

principal.php
Code :
1
2
3
4
5
6
7
8
9
 
if (!isset($_SESSION['mavar']))
{
	$_SESSION['mavar']='';
}
 
//blabla
 
session_write_close();
Script php appelé qui modifie mavar:
Code :
1
2
3
4
5
6
7
8
 
if(!isset($_SESSION))
{
 
	session_start();
}
//modif de $_SESSION['mavar'];
session_write_close();
Comment faire pour que ces valeurs soient bien conservées???

Merci pour votre aide.
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 11h44   #4
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Dans la mesure ou ta variable est dans $_SESSION, elle est conservée jusqu'a l'expiration de ta session. Si ton appel Ajax est bien fait, tu auras accés a cette variable n'importe ou sur ton site.

Es-tu sur que ton appel Ajax copie bien la variable en session, comment l'as-tu vérifié ?
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 11h54   #5
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
Merci pour ta réponse.

J'ai fait un test pour savoir si mes deux identifiants de session étaient les mêmes... et bien oui!!!

Je ne comprends donc pas pourquoi les variables sont NULL.

Concernant la copie des variables en session, je fais simplement :
Code :
1
2
 
$_SESSION['maVar']='truc';
et si je fais un var_dump de $_SESSION['maVar'], elle est bien égale à 'truc' dans le script php (appelé par ajax) et puis dès qu'on en sort, plus rien :
maVar=NULL...

Y'a t-il un moyen de "forcer" php à bien écrire ses sessions?
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 12h18   #6
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Le mieux c'est que tu postes tout ton code car je ne vois pas pourquoi PHP refuserait de conserver ta variable en session.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 13h52   #7
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
ça y est j'ai trouvé le problème mais je pouvais vraiment pas me douter que ça venait de

Donc en fait c'était parce que mes variables étaient du type $_SESSION[1]['maVar'].
Avec une variable du genre $_SESSION['maVar'] ça marche parfaitement...

J'y comprends rien, c'est très louche!!!

En tout cas merci pour ton aide!

EDIT :Sujet résolu et explications ici

Bonne journée
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred 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 23h32.


 
 
 
 
Partenaires

Hébergement Web