Session + Include

Session + Include - PHP - Programmation

Marsh Posté le 18-04-2004 à 15:16:59    

Salut
 
Je suis récemment passé de easyphp 1.6 à 1.7 et evidemment ce qui marchait ne marche plus...Mis à part les undefined variables qui polluent le tout et dont la correction est en cours, j'ai un problème de "A session had already been started - ignoring session_start() ".
 
Voila comment je fonctionne :
ma page est composé d'un bandeau en haut et un à gauche plus le reste. Dans une page (par exemple l'index), je fait ca :

Code :
  1. <?
  2.     session_start();
  3.     //récup des variables get,post et session
  4.     (...)
  5.    
  6.     include ('topframe.php');
  7.     include ('leftframe.php');
  8.     ...
  9. ?>


Dans topframe.php, je commence logiquement (enfin pour moi ;)) par un session_start() histoire de récupérer mes infos de sessions. Le problème c'est qu'il en veut pas puisqu'il me dit que la sesison est déjà commencée et qu'il ignore le session_start. Et bien sur, mes variables qui devraient être en session sont vides quand je les appelle depuis cette page.  
Toujours en suivant ma logique, j'ai essayé de virer le session_start(), et la, bien sur, ca ne marche pas non plus, les variables sont toujours vides...
 
D'ou peut venir ce problème ? Je présume que ca se trouve dans les réglages de easyphp 1.7 qui sont différent du 1.6...Comment résoudre ca ?
 
Merci


Message édité par gooopil le 18-04-2004 à 15:18:18
Reply

Marsh Posté le 18-04-2004 à 15:16:59   

Reply

Marsh Posté le 19-04-2004 à 23:36:16    

Un petit up pour la nuit :)

Reply

Marsh Posté le 20-04-2004 à 15:20:33    

Même problème!
J'ai recherché sur le site de EasyPHP et voila ce que j'ai trouvé :

Citation :

44 - [1.7] J'ai plein d'erreurs "Notice: Undefined variable" dans mes scripts.
 
     Depuis PHP 4.2.0 d'avril 2002 il faut maintenant:  
Initialiser ses variables avant de les utiliser.  
Recuperer les variables passées par GET ou POST avec (respectivement) $var=$_GET['var']; ou $var=$_POST['var'];.  
Gerer les sessions avec $_SESSION.
Voir l'aide PHP pour plus d'informations.  


 
Mais je m'y connais pas assez pour faire ça...
Si quelqu'un peut aider...

Reply

Marsh Posté le 20-04-2004 à 15:23:34    

Ah non, c'est pas le même problème, celui des undefined variable se résoud très facilement : tu fais

Code :
  1. if (!empty($_GET['message'])) 
  2.             $message=$_GET['message'];
  3. else $message="";


 
Mon problème concerne la récupération des variables de session dans une page en include :)

Reply

Marsh Posté le 20-04-2004 à 16:25:30    

euh...je comprend pas bien la commande que tu viens de me donner (j'y connais pratiquement rien...)
En gros, j'ai un fichier "index.php". Dans ce fichier, ya la commande include qui renvoie a "include.php" et le fichier include renvoie a son tour au different page du site (avec un adresse dela forme "index.php?page=exemple".
Et le fichier include ressemple à ça :
 

Citation :

<?php
if($page =="" ){include ("news/news.php" );}
if($page =="newsarchive1-10" ){include ("news/archives/00001-00010.php" );}
if($page =="newsarchive11-20" ){include ("news/archives/00011-00020.php" );}
if($page =="contact" ){include ("contact/contact.php" );}
if($page =="chat" ){include ("chat/chat.php" );}
if($page =="fanarts" ){include ("fanarts/fanarts.php" );}
...etc...
?>


 
Sinon, je crois que ton problème vient du fichier php.ini
Ya des explication dans le fichier. (mais moi j'ai rien comprit :P)

Reply

Marsh Posté le 20-04-2004 à 16:38:03    

avant tes if (que soit-dit en passant, je remplacerais pas un switch), tu fais :
  if (!empty($_GET[page ]))    
                $page =$_GET[page ];  
  else $page ="erreur";
Comme ca tu es sur que ta variable existe et provient de GET.
 
Cependant, ca ne règle pas mon problème...:( Quelqu'un peut m'expliquer comment j'utilise des sessions dans un include ?

Reply

Marsh Posté le 20-04-2004 à 16:49:37    

bah du démarre ta session dans le fichier qui inclut et tu récupère comme d'hab les variables dans ton fichier inclut en récupérant tes variables de session via $_SESSION['truc']
 
exemple:
 
pouet.php

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['truc'] = "pouet";
  4. include('tinkywinky.php');
  5. ?>


 
tinkywinky.php

Code :
  1. <?
  2. echo $_SESSION['truc'];
  3. ?>


 
Lorsque tu lanceras pouet.php, tu auras bien "pouet" d'affiché à l'écran. Enfin bref, je ne voit pas où est le problème  [:romn]


Message édité par Ayuget le 20-04-2004 à 16:51:40
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed