|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Bonjour,
J'ai un formulaire, avec un champ dont la valeur par défaut est le contenu d'une variable session (ou tout au moins c'est ce que j'aimerais) Au début du script, j'essaie d'initialiser la variable session de la manière suivante : Code :
Est-ce qu'uns session se termine lorsqu'on met "?>" ? (je ferme les balises php après le traitement ci-dessus, et je les réouvre pour affecter la valeur dans le champ de saisie) Merci d'avance. |
||
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() Développeur Web Inscription : décembre 2004 Messages : 636 ![]() |
Salut,
Citation:
Citation:
Non seulement, elle ne se termine pas quand tu mets ?>, mais elle ne se termine pas non plus quand le script est terminé. Une session ne se termine que lorsqu'elle expire (inactivité pendant X secondes), ou lorsque tu apelles explicitementc'est l'avantage des sessions (les valeurs sont conservées de script en script) Fais voir le code html de ton formulaire ?
__________________
Ne cliquez pas sur ce lien |
||
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Code :
fait un dans ta page pour voir ce que tu as dedans.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
||
|
|
00
|
|
|
#4 | ||
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Merci à vous deux pour votre aide.
Voici les précisions que vous m'avez demandées, avec les étapes d'un scénario habituel : 1. L'utilisateur arrive sur la page en vue de saisir le formulaire et la session s'ouvre. $_POST contient Array(). 2. L'utilisateur envoie le formulaire. $_POST contient : Array ( [PHPSESSID] => 0a7648fb358773af0a700dc36d659e78 [filtre_no_adh] => 26 [bt_filtre] => Effectuer la recherche ) 3. Je clique sur OK en face de l'url pour recharger la page. $_POST contient Array(). Code :
PS : j'ai essayé de mettre le contenu de la variable session dans une variable, que je mets dans le contenu de la zone de texte, et la valeur s'affiche une fois dans la zone de texte, alors que ce n'est pas le cas avec la variable session. |
||
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Citation:
Citation:
Citation:
quand tu envoie le formulaire, la page qui arrive contient des variables post. mais si tu recharges la page ou passe à la suivante, il n'y a plus de variable post, ce qui est normal vu que tu n'as pas relancé de formulaire. formulaire = variable post sur la page qui arrive et c'est tout Donc il faut que tu ta pages tu récuperes la variable post et que tu la stocke dans une variable de session et que tu n'utilises que la variable de sessions.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|||
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Oui, je suis bien d'accord avec ça. Et je trouve tout ce qui touche à la variable $_POST normal. Je décrivais juste le scénario en répondant à vos questions.
Par contre, comme je l'explique dans mes premiers messages, ma variable de session est vide lorsque je veux la réutiliser comme valeur par défaut dans le formulaire, ou lorsque je reviens sur la page. Et c'est à ce niveau que se situe le problème. |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
fais tu des session_start(); au début de chaque page ?
rebelotte tu refais un print_r($_SESSION); et tu nous dit quand est-ce que tu "perds" ta valeur de session
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#8 | ||
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Citation:
Citation:
Etape 2 : Array ( [no_adhes] => 28000156 ) Etape 3 : Array ( [no_adhes] => ) Je ne comprends pas pourquoi la variable devient vide, alors que je ne la détruis nulle part... |
||
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Code :
car la deuxieme fois ton POST ne vaut rien. enleve le else, car les sessions sont déja alloué de toute facon. et quand tu fais un session_start tout a début, tu n'as rien dans les sessions. ++
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
||
|
|
00
|
|
|
#10 | ||
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Mon code initial était :
Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Code :
et sinon tu n'as pas d'autre endroit ou $_SESSION['no_adhes'] = quelquechose ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
||
|
|
00
|
|
|
#12 | |
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Cela ne passe pas sur la 3e page.
Citation:
|
|
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
whaa ... tu as pas un session_destroy ?
le plus simple si c'est possible c'est que tu montres tout ton code maintenant, car sinon je vois pas. et c'est pas un probleme de ton navigateur ? on peut pas nous tester en ligne ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#14 | |||
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Citation:
De plus, le script est en intranet, donc impossible de le consulter en ligne. Citation:
Citation:
Je vous tiens au courant et encore merci pour l'aide. |
|||
|
|
00
|
|
|
#15 | ||
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
pas de probleme !!
fait des echo partout pour débugger, je fais comme ça moi et j'arrive à piger par ou il passe. et je print ca à chaque début de page : Code :
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
||
|
|
00
|
|
|
#16 |
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
Bon finalement, j'ai trouvé la ligne qui fait défaut :
Mais je ne comprends pas pourquoi cela réinitialise la variable session car je ne l'appelle pas... As-tu une explication ? |
|
|
00
|
|
|
#17 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
ah ah !!
oki, c'est à cause d'un clause de php, tu as register_global à 1 (ON) je parie et du coup dans le script ca fout le dawa. en gros quand on a register_global à 1, $toto = $_GET, $_POST, $_SESSION du meme nom. va voir ce post si ca t'interesse : http://www.developpez.net/forums/sho...d.php?t=169399 sinon pour ta solution : soit changer de nom soit désactiver register_global, car c'est une faille de sécurité quand meme
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#18 |
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
En effet, je viens de regarder le php.ini et register_global est bien à 1. C'est la première fois ou presque que je vais fouiller dans ce fichier !
Pour l'instant, je change le nom de ma variable session. Par défaut, le register_global doit être à 0, non ? |
|
|
00
|
|
|
#19 | |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Citation:
mais c'est SUPER déconseillé. change le nom de ta variable mais change aussi à 0 register_globals, car comme ca tu es sur que les prochaines erreurs ne viendront pas de la
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
|
00
|
|
|
#20 |
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 537 ![]() |
OK. Et bien merci beaucoup pour ta patience et tes explications ! C'est très sympa !
@+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com