innertHML et variable de session PHP

innertHML et variable de session PHP - PHP - Programmation

Marsh Posté le 26-03-2013 à 17:13:47    

Bonjour,
 
Question à 2 sesterces, pourquoi avec ce code la page 2 ne récupère pas la variable de session ?
 
 
CODE page1.php

Code :
  1. // CODE PHP
  2. session_start();
  3. $_SESSION['variable1'] = 'coucou';
  4. (...)
  5. // CODE JS
  6. var xhr = getXhr();
  7. var mondiv = document.getElementById('mondiv');
  8. mondiv.innerHTML = xhr.open('GET', 'page2.php', false); // j'ai simplifié pour l'exemple


 
CODE page2.php

Code :
  1. // CODE PHP
  2. session_start();
  3. echo $_SESSION['variable1'];


 
Et là ça ne donne rien (la page 2 n'affiche pas coucou) !  :heink:  :cry:  
 
Pourquoi donc est-ce que la page 2 ne retrouve pas la variable de session initialisée dans la page 1 ?
 
 :bounce:


Message édité par Oyeee le 26-03-2013 à 17:16:03
Reply

Marsh Posté le 26-03-2013 à 17:13:47   

Reply

Marsh Posté le 26-03-2013 à 18:43:11    

je crois qu'il va falloir que tu revise les xhr
Pourquoi tu n'utiliserai pas jquery ?


---------------

Reply

Marsh Posté le 26-03-2013 à 19:31:18    

Merci pour la réponse mais pour les xhr ça n'a pas d'importance à priori j'ai condensé l'exemple.
 
Quant à jquery ce n'est pas la question ici  :na:

Reply

Marsh Posté le 26-03-2013 à 20:00:37    

Je pense que xhr.open ne retourne pas ce que tu penses
 
Mais peut être que ça non plus, ce n'est pas la question


---------------

Reply

Marsh Posté le 27-03-2013 à 09:34:51    

manquerait pas du code là, :??:
genre :

Code :
  1. xhr.open('GET', 'page2.php', false);
  2. xhr.send();
  3. if ((xhr.readyState == 4) && (xhr.status == 200)) {  
  4.    mondiv.innerHTML = xhr.responseText;
  5. }


Parce que même si t'es en mode synchrone, le serveur renvoie pas instantanément la réponse :/
 
Et dans ton fichier page2.php, ça serait pas mal de rajouter avant ton echo :
header("Content-type: text/html; charset=iso-8859-1" );


Message édité par rufo le 27-03-2013 à 09:35:47

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-03-2013 à 12:44:47    

Merci, je sais, mais ce n'est pas la question  :D  C'est pour ça que j'ai précisé que j'ai simplifié pour l'exemple, etc... En gros j'ai allégé la présentation pour que les lecteurs ne soient pas rebutés ! Mais la problématique demeure. Concrètement la page est bien chargée, ce n'est pas là le problème donc. La question c'est pourquoi la variable de session n'est pas récupérée par la page 2  :heink:  
 
On est dans un forum PHP ici :pt1cable: sauf erreur de ma part les histoires HTML et JS ne sont pas le sujet  :ange:  
 
Je flanche là  :(


Message édité par Oyeee le 27-03-2013 à 12:45:10
Reply

Marsh Posté le 27-03-2013 à 14:50:15    

Parce que ton pb peut parfaitement venir de ton code javascript :/
 
Avec Firebug (ou similaire), est-ce que tu vois bien que ta page page2.php appelée renvoie bien la valeur attendue? Si oui, ton pb vient de javascript, sinon, ça vient bien de php.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-03-2013 à 15:52:43    

Bin, justement je ne sais pas : Firebug signale bien que la page2.php est 200 OK mais la valeur de la variable de session n'est pas pour autant affichée dans la page...  :(  
 
Et au temps pour moi pour le

Code :
  1. header("Content-type: text/html; charset=iso-8859-1" );

car effectivement ajax / php y sont sensibles... mais là ça résout pas le problème visiblement  :heink:

Reply

Marsh Posté le 27-03-2013 à 16:17:00    

Tu pourrais monter le code s des 2 pages php :/ Le bug vient peut-être d'un truc qui n'a rien à voir a priori...
(ex récent : un mec qui pensait que sa fonction prenait toujours la valeur par défaut d'un des paramètres alors qu'en fait, il faisait un appel à cette fonction de manière récursive et dans ces appels récursifs, il avait oublié de mettre le paramètre en question, d'où la valeur par défaut... :/ )


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-03-2013 à 19:49:37    

Merci, tu as raison. J'ai tout remis à plat avec php après firebug comme tu le suggérais...
 
Et il là j'ai regardé du côté des sessions elles-mêmes...
 
Résultat c'est visiblement le session start qui n'était pas bien géré par le serveur visiblement à cause de la fonction personnalisée "handler et des bananes" qui pourtant fonctionnait parfaitement chez l'hébergeur précédent... Comme quoi comme tu dis c'était carrément autre chose et ce qui fonctionne sur un serveur ne réagit pas toujours pareil ailleurs !
 
Mais je comprends toujours pas pourquoi le session start n'était pas traduit à travers un get et innerhtml via ajax alors que dans un incluse PHP pas de souci...  
 
Merci pour tes :heink:  réponses et le temps passé !  :hello:


Message édité par Oyeee le 27-03-2013 à 19:52:26
Reply

Marsh Posté le 27-03-2013 à 19:49:37   

Reply

Marsh Posté le 28-03-2013 à 09:53:55    

J'ai déjà eu un pb avec le handler personnalisé pour gérer les sessions à ma façon en BD. Suivant la version d'Apache, ça me faisait péter apache justement. Et des fois, la session était initialisée, d'autres fois non. Sur le web, j'avais trouvé des personnes ayant le même pb que moi mais y'avait pas de solution semble t-il à l'époque (3-4 ans).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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