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

  FORUM HardWare.fr
  Programmation
  PHP

  session perdue après un window.location [pas encore résolu :( ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

session perdue après un window.location [pas encore résolu :( ]

n°1907576
suizokukan
Posté le 22-07-2009 à 12:03:45  profilanswer
 

Bonjour,
ma question semble banale mais je ne comprends pas le problème :
 
* mon script p1.php passe la main à p2.html via un require("p2.html" );
* mon script p2.html passe la main à p3.php via un window.location = "p3.php";
 
La session créée dans p1.php est perdue dans p3.php. J'utilise pourtant session_start() en début de script...
 
Voyez-vous d'où vient le problème ? Merci beaucoup !


Message édité par suizokukan le 22-07-2009 à 16:15:30

---------------
rule #1 : trust the python
mood
Publicité
Posté le 22-07-2009 à 12:03:45  profilanswer
 

n°1907577
grosbin
OR die;
Posté le 22-07-2009 à 12:07:13  profilanswer
 

ton serveur execute le html en tant que php ?
Si p1.php & p3.php ont le session_start(); puis $_SESSION[bla]=1 aucun soucis devrait se poser


Message édité par grosbin le 22-07-2009 à 12:07:34

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1907580
suizokukan
Posté le 22-07-2009 à 12:12:41  profilanswer
 

Merci Grosbin pour ta réponse rapide : que signifie pour toi "ton serveur execute le html en tant que php ?" Comment puis-je le savoir ?
 
Mon fichier p2.html commence par des balises <?php ... ?> puis <html> ... </html>.


---------------
rule #1 : trust the python
n°1907581
grosbin
OR die;
Posté le 22-07-2009 à 12:19:58  profilanswer
 

1) si ton serveur execute le html en tant que php sinon c'est rapé


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1907583
suizokukan
Posté le 22-07-2009 à 12:37:02  profilanswer
 

Un grand merci pour tes explications... même si maintenant tout fonctionne correctement sans que je comprenne bien pourquoi. Comme souvent, le fait de poser la question et de s'imposer une bonne lecture du code suffit à corriger ses erreurs.
 
Merci !


---------------
rule #1 : trust the python
n°1907604
Pascal le ​nain
Posté le 22-07-2009 à 13:48:46  profilanswer
 

C'est juste que du code php dans une page .html c'est pas très réglo...
Si tu balance du code php dans une page, il est préférable de renommer la page en .php
Il y a sans doute certains serveurs qui ne vont même pas interpréter le code php si la page a .html pour extension...
Assez dangereux, surtout si tu donnes tes login de connexion à ta bdd dans cette page.


Message édité par Pascal le nain le 22-07-2009 à 13:56:24
n°1907678
suizokukan
Posté le 22-07-2009 à 15:56:55  profilanswer
 

Tout d'abord, merci pour vos réponses... je sais que j'abuse de votre gentillesse mais... je viens d'approfondir le problème, et je comprends de moins en moins.
 
En résumé :
* p1.php crée une session et appelle p2.html à l'aide de require("p2.html" );

Code :
  1. <?php
  2. // fichier p1.php
  3. session_start();
  4. $_SESSION['abc'] = 123;  // variable quelconque
  5. echo "m";  // ??? ligne nécessaire (voir plus bas)
  6. require_once($_SERVER['DOCUMENT_ROOT']."/html/p2.html" );
  7. ?>


* p2.html ne fait rien et passe la main à p3.php si le javascript est activé à l'aide de location.window("p3.php" );  
   (p2.html ne contient aucun code PHP et n'affiche rien)
 
* p3.php affiche alors le contenu de $_SESSION.

Code :
  1. <?php
  2. // fichier p3.php
  3. session_start();
  4. print_r( $_SESSION );
  5. ?>


Et voici là où je coince : ma session n'existe plus dans p3.php sauf si j'émets quelques caractères dans p1.php (c'est ma ligne echo "m" ). Pourquoi ? Merci d'avance !


Message édité par suizokukan le 22-07-2009 à 16:17:03

---------------
rule #1 : trust the python
n°1907714
suizokukan
Posté le 22-07-2009 à 17:25:19  profilanswer
 

Bon, j'ai identifié d'où pouvait venir le problème... même si je ne comprends pas pourquoi :
Dans p2.htm j'avais écrit :

Code :
  1. <base href="http://monsite.fr/" />


Supprimer cette ligne résolvait tous mes problèmes; en cherchant un peu je me suis rendu compte qu'il fallait que je l'écrivisse ainsi :

Code :
  1. <base href="http://www.monsite.fr/" />


 
Si une âme charitable pouvait m'éclairer... En tout cas, merci à ceux qui m'ont lu et/ou répondu !


---------------
rule #1 : trust the python
n°1907720
Pascal le ​nain
Posté le 22-07-2009 à 17:45:25  profilanswer
 

Je crois que tu n'as pas bien saisi le principe des redirections au niveau php et html.
Déjà require() s'utilise en début et uniquement en début de page php pour déclarer par exemple des fonctions.
Si tu veux inclure une page au sein d'une autre, utilise include().
Ensuite, include() et require() servent à inclure, comme leur nom l'indique.
Si tu veux faire une redirection, tu dois utiliser header('Location: tapage.html');
 
Si tu inclues p2.html dans p1.php, tu seras toujours dans p1.php, mais le code de p2.html sera 'copié/collé' dans la page retournée à l'internaute.
Si tu souhaites vraiment que l'utilisateur soit redirigé sur p2.html, utilise header().
 
Je n'ai pas bien saisi ce que tu voulais faire, vu que chaque solution que tu as proposée fait un truc différent...
Précise l'usage final de ce que tu souhaites faire; pour l'instant, je suis dans le vague... ;)


Message édité par Pascal le nain le 23-07-2009 à 09:56:43
n°1908075
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 23-07-2009 à 17:55:20  profilanswer
 

non, on peur "require" plus loin si on veut ... le début ce sont les cookies et sessions. la différence entre include et require est que si l'include foire, le script continuera à s'exécuter, alors que dans le cas du require ça renverra un "fatal error" et ça s'arrêtera.
 
C'est sûr que je trouve globalement plus "propre" de le faire en début de fichier, mais pour quelques exemples ponctuels (ex. lecture d'un template, ou d'un fichier langue particulier) je pense que ça peut se faire ailleurs dans le code.
 
header, c'est pas *forcément* destiné à la redirection, c'est destiné à envoyer un formatage de document (des entêtes) : un text/html, une image/png, etc.
 
"Location" enverra en fait l'entête et le contenu du fichier appelé  et résultera, au final, à une forme de redirection, mais c'est pas ça à la base.


---------------
NewsletTux - outil de mailing list en PHP MySQL
mood
Publicité
Posté le 23-07-2009 à 17:55:20  profilanswer
 

n°1908078
Pascal le ​nain
Posté le 23-07-2009 à 17:58:58  profilanswer
 

Merci pour ces précisions, ca me servira aussi  :hello:


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

  session perdue après un window.location [pas encore résolu :( ]

 

Sujets relatifs
[RESOLU] [VBS] copier uniquement les lignes filtrées sous ExcelSSL_SESSION_ID introuvable
Pattern Java | Probleme ecriture dans fichier texte.[VBA][Résolu] Completer une feuille type
[résolu]recherche dans un fichier encodé en utf8[Résolu][Perl] Chaine entre 2 délimiteurs
[Résolu][Expression Régulière] Besoin d'aideVariable de Session avec Input
[Résolu] Prob d'url rewriting avec OVH (.htaccess)[LaTeX][resolu] package listings et utilisation de emphstyle
Plus de sujets relatifs à : session perdue après un window.location [pas encore résolu :( ]


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