Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1436 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Variable de session ne passe pas...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variable de session ne passe pas...

n°1176400
Mploufeur
Posté le 15-08-2005 à 10:31:42  profilanswer
 

Bonjour à tous,
 
Dans page0.php je remplis un forumulaire textfiel et je passe à la page1.php avec le bouton.

Code :
  1. <html>
  2. <head>
  3. <title>Document sans titre</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6. <body>
  7. <form name="form1" method="post" action="page1.php">
  8.   <p>
  9.     <input type="text" name="textfield">
  10.   </p>
  11.   <p>
  12.     <input type="submit" name="Submit" value="Envoyer">
  13.   </p>
  14. </form>
  15. </body>
  16. </html>


 
Dans page1.php  je met le contenu de ce forumulaire dans une variable de session appelée variablepour pourvoir la réutiliser plus tard, et je passse à la pge suivante avec le bouton.

Code :
  1. <html>
  2. <head>
  3. <title>Document sans titre</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6. <body>
  7. <?php
  8. $_SESSION['variable'] = $_POST['textfield'];
  9. echo 'Page 1<br>';
  10. echo 'La variable de session est égale à :',$_SESSION['variable'];
  11. ?>
  12. <form name="form1" method="post" action="page2.php">
  13.   <input type="submit" name="Submit" value="Envoyer">
  14. </form>
  15. </body>
  16. </html>


 
Enfin en page2.php, je souhaite afficher cette variable de session avec le code suivant:

Code :
  1. <?php
  2. session_start();
  3. echo 'Page 2<br>';
  4. echo 'La variable de session est égale à :',$_SESSION['variable'];
  5. ?>


et il me balance le message d'erreur suivant

Code :
  1. Notice: Undefined index: variable in c:\program files\easyphp\www\essai prog\page2.php on line 4


 
 
Je sais bien que je débute en PHP, mais j'ai cherché un peu partout une explication, et je n'ai rien trouvé. Il y a quelqu'un qui peut m'aider?
Merci!!

mood
Publicité
Posté le 15-08-2005 à 10:31:42  profilanswer
 

n°1176405
zapan666
Tout est relatif
Posté le 15-08-2005 à 10:43:22  profilanswer
 

mettre un session_sart() dans page1.php ?


---------------
my flick r - Just Tab it !
n°1176423
Mploufeur
Posté le 15-08-2005 à 11:27:02  profilanswer
 

J'y avais bien pensé. C'est pas ça non plus car à l'affichage de la page 1, il me met le message:

Code :
  1. Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp\www\essai prog\page1.php:8) in c:\program files\easyphp\www\essai prog\page1.php on line 9


Message édité par Mploufeur le 15-08-2005 à 11:27:40
n°1176426
mcjoedassi​n
Posté le 15-08-2005 à 11:30:17  profilanswer
 

tu mets le session_start en tout début de page. pas un espace, pas une ligne avant. Le script doit commencer par
<?php session_start(); ...

n°1176432
Mploufeur
Posté le 15-08-2005 à 11:48:22  profilanswer
 


Voui.
Sauf que c'est sur 2 lignes: Ca donne

Code :
  1. <?php
  2. session_start();


(mais c'est pareil)
 
Ah, au fait, je suis avec EasyPHP. Je ne sais pas si ça a une importance... :(

n°1176481
xeterchief
Posté le 15-08-2005 à 13:58:15  profilanswer
 

Il y a des chances, tu devrais essayer sur un hébergeur gratuit dont tu es sur qu'il supportes les sessions ( attention chez Free tu dois créer une répertoire session à la racine )

n°1176482
Mploufeur
Posté le 15-08-2005 à 14:00:23  profilanswer
 

J'ai simplifié le code de page1.php et ajouté un session_start(); en tout début. Ca me donne ça maintenant:
 
page0.php

Code :
  1. <html>
  2. <head>
  3. <title>Document sans titre</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6. <body>
  7. <form name="form1" method="post" action="page1.php">
  8.   <p>
  9.     <input type="text" name="textfield">
  10.   </p>
  11.   <p>
  12.     <input type="submit" name="Submit" value="Envoyer">
  13.   </p>
  14. </form>
  15. </body>
  16. </html>


page1.php

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['var'] = $_POST['textfield'];
  4. echo 'Page 1<br>';
  5. echo 'La variable de session est égale à :',$_SESSION['var'];
  6. session_destroy();
  7. ?>
  8. <form name="form1" method="post" action="page2.php">
  9.   <input type="submit" name="Submit" value="Envoyer">
  10. </form>


page2.php

Code :
  1. <?php
  2. session_start();
  3. echo 'Page 2<br>';
  4. echo 'La variable de session est égale à :', $_SESSION['var'];
  5. session_destroy();
  6. ?>


 
--> En local (avec EasyPHP) ça affiche le texte "Page 2 (ligne suivante) La variable de session est égale à:" puis ça me donne le message d'erreur suivant:
Notice: Undefined index: var in c:\program files\easyphp\www\essai prog\page2.php on line 4
 
--> Sur le serveur (Free, où j'ai mis un répertoire "sessions" à la racine) ça ne me donne pas de message d'erreur mais ça ne me renvoie pas la valeur de la variable "var".

Ca inspire quelqu'un ça?

Parce que j'en perds mon latin/PHP (OK, je débute, mais quand même...) :cry:

n°1176487
mcjoedassi​n
Posté le 15-08-2005 à 14:20:32  profilanswer
 

session_destroy(): qu'est ce qu'il vient foutre là ?

n°1176540
Mploufeur
Posté le 15-08-2005 à 16:12:49  profilanswer
 

mcjoedassin a écrit :

session_destroy(): qu'est ce qu'il vient foutre là ?


Bah, c'est peut-être pas indispensable, mais ça ne gène pas (à priori).
Je l'avais rajouté "pour voir" si c'était ça qui faisait que ça ne marchait pas: Eh ben nan!

n°1176586
mcjoedassi​n
Posté le 15-08-2005 à 17:12:34  profilanswer
 

oui, le session_start doit etre au début ET enlève le session_destroy

mood
Publicité
Posté le 15-08-2005 à 17:12:34  profilanswer
 

n°1176815
Profil sup​primé
Posté le 16-08-2005 à 03:22:31  answer
 

problème d'initié les session : déjà faut commencer par lire la doc sur les sessions en php, dans laquelle tu liras qu'un session_start() se met avant toute sortie de flux
tu peux également y paramétrer à la volé le dossier dans lequel les stocker (pas besoin du php.ini)
le session_destroy() te sert à détruire la session, si t'en a besoin dans une autre page comment veux tu la récupérer si tu la détruit
si tu as des NOTICE, c'est que t'as pas initialisé tes variables, c'est la base de la programmation
 
pour bien coder tu mets error_reporting(E_ALL) en haut de page, et tu corrige toutes les lignes ou un NOTICE t'es indiqué :)
si tu souhaite laisser tes notice trainer sans les voir dans la sortie, utilise error_reporting(E_ALL ^ E_NOTICE)  
 
 

n°1178310
Mploufeur
Posté le 17-08-2005 à 21:01:36  profilanswer
 

A priori, j'ai trouvé ma solution.
Il semble qu'il y avait plusieurs raisons que ça ne marche pas. Je ne sais pas laquelle était la bonne (peut-être toutes)
 
    * Il fallait que je referme mon navigateur web à chaque essai. En effet, les sessions et leurs contenus ne sont complètement détruits qu'à la fermeture du navigateur (il y a moyen de coder pour tout détruire mais bon...). Ça pouvait merder à cause de valeurs qui restaient en mémoire qq part...
    * Il semble que quand on démarre une session, il faut initialiser TOUTES les variables, même si elles ne sont pas des variables de session. Et dans mon cas, j'utilisais des variables (qui pouvaient être vides selon ce qu'on rentrait dans les formulaires) sans les initialiser, au moins avec une valeur vide.
 
Je crois bien que Spike avait raison.
Merci à tous de votre aide...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Variable de session ne passe pas...

 

Sujets relatifs
récupération de la variable d'URL[ASP.NET] variable de session d'une page asp a aspx ?
[PHP] SESSION et COOKIEFonction javascript + variable php
[ASP] partager une session entre 3 domainesperte variable session
Pblm de session, masquer l'url a l'impressionPetit éclaircicement sur les variables de session & CO
[PHP] stocker un mot de passe dans une variable de session (en clair) 
Plus de sujets relatifs à : Variable de session ne passe pas...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR