session perdue après un window.location [pas encore résolu :( ] - PHP - Programmation
Marsh Posté le 22-07-2009 à 12:07:13
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
Marsh Posté le 22-07-2009 à 12:12:41
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>.
Marsh Posté le 22-07-2009 à 12:19:58
1) si ton serveur execute le html en tant que php sinon c'est rapé
Marsh Posté le 22-07-2009 à 12:37:02
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 !
Marsh Posté le 22-07-2009 à 13:48:46
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.
Marsh Posté le 22-07-2009 à 15:56:55
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 :
|
* 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 :
|
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 !
Marsh Posté le 22-07-2009 à 17:25:19
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 :
|
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 :
|
Si une âme charitable pouvait m'éclairer... En tout cas, merci à ceux qui m'ont lu et/ou répondu !
Marsh Posté le 22-07-2009 à 17:45:25
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...
Marsh Posté le 23-07-2009 à 17:55:20
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.
Marsh Posté le 22-07-2009 à 12:03:45
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