Variable de session ne passe pas... - PHP - Programmation
Marsh Posté le 15-08-2005 à 11:27:02
J'y avais bien pensé. C'est pas ça non plus car à l'affichage de la page 1, il me met le message:
Code :
|
Marsh Posté le 15-08-2005 à 11:30:17
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(); ...
Marsh Posté le 15-08-2005 à 11:48:22
Voui.
Sauf que c'est sur 2 lignes: Ca donne
Code :
|
(mais c'est pareil)
Ah, au fait, je suis avec EasyPHP. Je ne sais pas si ça a une importance...
Marsh Posté le 15-08-2005 à 13:58:15
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 )
Marsh Posté le 15-08-2005 à 14:00:23
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 :
|
page1.php
Code :
|
page2.php
Code :
|
--> 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...)
Marsh Posté le 15-08-2005 à 16:12:49
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!
Marsh Posté le 15-08-2005 à 17:12:34
oui, le session_start doit etre au début ET enlève le session_destroy
Marsh Posté le 16-08-2005 à 03:22:31
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)
Marsh Posté le 17-08-2005 à 21:01:36
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...
Marsh Posté le 15-08-2005 à 10:31:42
Bonjour à tous,
Dans page0.php je remplis un forumulaire textfiel et je passe à la page1.php avec le bouton.
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.
Enfin en page2.php, je souhaite afficher cette variable de session avec le code suivant:
et il me balance le message d'erreur suivant
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!!