Sessions sur 2 scripts

guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016 - 10 sept. 2006 à 22:24
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016 - 13 sept. 2006 à 19:10
Salut,
SI Quelqu'un pouvait m'expliquer le pb suivant et comment le résoudre:

Dans le corps de mon script principal  index.php , j'insere une balise image echo ''
Dans le fichier img.php se trouve  l'instanciation d'un objet de classe image ainsi qu'une methode qui renvoit l'image créée (la seule sortie sur cette page avec son header bien sur).
Lors de l'appel d'une méthode de cette classe image, je créé un map html  et le stocke dans une variable de session puis la récupére dans le script principal.
 Le problème  c'est que ma session est déjà ouverte par session_start() avant l'exécution d'image.php et que l'affectation du map en variable de session, qui nécessite un autre session_start (),  n'est plus en cache lorsque j'essaie de la récupérer dans le script principal.
 Voici les étapes de mon script:

<?php
session_start();
?>
<html>

<?php
echo '';
$map= $_SESSION['map'];
echo '<map name ="img">'.$map.'</map>';
//Et là le message Notice: Undefined index: map in D... apparait alors que map est bien présent dans
// le fichier de session.
?>

</html>
le truc serait peut être d'utiliser ob_start et ob_end_flush mais j'ai essayé (peut-être mal) et ça ne marche pas.  
MERCI pour votre aide,

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 sept. 2006 à 15:20
Hello,

bah ouais...la variable sera prise en compte seulement au 2d retour vers le serveur.
Tu ne vas pas pouvoir faire ça comme ça...
Si tu raffraichis ta page, tu verras que ta variable est initialisée, après.
Un truc dans le genre devrait marcher  (à creuser, je n'ai pas vérifié):
<?php
session_start ();
?>

<?php
$sPath = session_save_path ();
$sVar = file_get_contents ($sPath.'/sess_'.session_id ());
session_decode ($sVar);
print_r ($_SESSION);
?>
0
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
12 sept. 2006 à 13:47
salut, ouais mais en fait ce que je disais n'était pas juste car si je fais sleep() après le tag< img>, ma variable de session n'est pas encore dans le fichier bien que j'ai fait un commit dans la methode appellée par img.php.
J'ai l'impression que le script principal s'execute dans son intégralité avant que img.php ne soit éxécuté.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 sept. 2006 à 08:07
Ce qui est normal...le html est toujours executé après le php. Or, ta balise est une balise html. Donc oui, c'est bien ce qu'il se passe. Tout le php est exécuté, le html généré...donc appel à ton img.php, mise en session...à la fin.  Je suppose.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 sept. 2006 à 08:12
d'ailleurs mon code ne peut pas marcher du  coup, lol.
Ca se passe comme ça : ton utilisateur appelle ta page avec ta balise img. la PHP de cette page est exécuté. le html généré envoyé au navigateur. Le navigateur parsele html...voit la balise img qui appelle une  page php. On retourne au serveur juste à ce moment là. Ta page img.php est exécuté...mais du coup, la session n'est pas "vue" dans la 1ère page. Mais elle eexiste, et si tu raffraichis, ou change de page, évidemment, elle est là.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
13 sept. 2006 à 19:10
Du coup c'est un gros inconvénient, si tu veux pas utiliser de window.location.reload.
Mais merci pour ton analyse qui m' a fait creusé un peu +loin.
0
Rejoignez-nous