Dans quelques scripts de mon site, j'ai mis en place une session
basique, pour voir si ça marche et transmettre des variables de session.
Mon site a un serveur mutualisé qui a le Safe Mode à On.
D'autre part, mon site utilise l'instruction header, pour rediriger
vers d'autres scripts de mon site. C'est mal je sais, mais c'est la
seule manière dont je dispose pour dépasser la limite maximale
d'exécution de mes scripts, fixée par l'hébergeur à 20 secondes.
La session est donc déclenchée avec session_init() en début de
script, et il y a des header en fin de script.
Le PHP Manual, indique que l'instruction header, nécessite de ne pas
afficher ou envoyer aucune donnée vers le client, pour que l'instruction
header puisse s'exécuter. Mais il nementionne pas le problème des
headers et des sessions.
Les header et les sessions sont-ils compatible ?
Merci beaucoup de vos réponses.
J'ai constaté que le trafic de mon site a tendance à baisser, je me
demande s'il n'y a pas comme un bug dans son exécution, à cause des
sessions.
D'un autre côté, si mon site devient payant ( à terme ), je serai bien
obligé d'utiliser les sessions si je veux disposer du package qui me
sera fourni par mon intermédiaire de paiement.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Le PHP Manual, indique que l'instruction header, nécessite de ne pas afficher ou envoyer aucune donnée vers le client, pour que l'instruction header puisse s'exécuter. Mais il nementionne pas le problème des headers et des sessions.
Les header et les sessions sont-ils compatible ?
Oui, puisque tout ceci fait partie des entêtes HTTP. Le premier octet de contenu force à envoyer d'abord les entêtes suivis d'une ligne vide, mais tant que le premier octet n'est pas envoyé on peut continuer à définir d'autres entêtes (y compris pour définir une session).
Note que la bufferisation des données permet en outre de contourner cette limitation. Cf. la FAQ : <http://faqfclphp.free.fr/#rub2.12>.
Le PHP Manual, indique que l'instruction header, nécessite de ne pas
afficher ou envoyer aucune donnée vers le client, pour que l'instruction
header puisse s'exécuter. Mais il nementionne pas le problème des
headers et des sessions.
Les header et les sessions sont-ils compatible ?
Oui, puisque tout ceci fait partie des entêtes HTTP. Le premier octet
de contenu force à envoyer d'abord les entêtes suivis d'une ligne vide,
mais tant que le premier octet n'est pas envoyé on peut continuer à
définir d'autres entêtes (y compris pour définir une session).
Note que la bufferisation des données permet en outre de contourner
cette limitation. Cf. la FAQ : <http://faqfclphp.free.fr/#rub2.12>.
Le PHP Manual, indique que l'instruction header, nécessite de ne pas afficher ou envoyer aucune donnée vers le client, pour que l'instruction header puisse s'exécuter. Mais il nementionne pas le problème des headers et des sessions.
Les header et les sessions sont-ils compatible ?
Oui, puisque tout ceci fait partie des entêtes HTTP. Le premier octet de contenu force à envoyer d'abord les entêtes suivis d'une ligne vide, mais tant que le premier octet n'est pas envoyé on peut continuer à définir d'autres entêtes (y compris pour définir une session).
Note que la bufferisation des données permet en outre de contourner cette limitation. Cf. la FAQ : <http://faqfclphp.free.fr/#rub2.12>.
Jean-Francois Ortolo
Oui, puisque tout ceci fait partie des entêtes HTTP. Le premier octet de contenu force à envoyer d'abord les entêtes suivis d'une ligne vide, mais tant que le premier octet n'est pas envoyé on peut continuer à définir d'autres entêtes (y compris pour définir une session).
Note que la bufferisation des données permet en outre de contourner cette limitation. Cf. la FAQ : <http://faqfclphp.free.fr/#rub2.12>.
Bonjour Monsieur
Merci beaucoup de votre réponse.
Mais... La session est ouverte avec session_init() au début du script, et le header de redirection avec header("Location: .$url), figure à la fin du script.
Le header de redirection va-t-il s'exécuter, sachant que la session a déjà été ouverte ( et même refermée juste avant la redirection, pour faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au navigateur client, comment le header peut-il s'exécuter, si rien ne doit avoir été envoyé au client, pour que le header s'exécute ?
Merci beaucoup.
Bien à vous.
Amicalement.
Jean-Francois Ortolo
Oui, puisque tout ceci fait partie des entêtes HTTP. Le premier octet
de contenu force à envoyer d'abord les entêtes suivis d'une ligne vide,
mais tant que le premier octet n'est pas envoyé on peut continuer à
définir d'autres entêtes (y compris pour définir une session).
Note que la bufferisation des données permet en outre de contourner
cette limitation. Cf. la FAQ : <http://faqfclphp.free.fr/#rub2.12>.
Bonjour Monsieur
Merci beaucoup de votre réponse.
Mais... La session est ouverte avec session_init() au début du
script, et le header de redirection avec header("Location: .$url),
figure à la fin du script.
Le header de redirection va-t-il s'exécuter, sachant que la session a
déjà été ouverte ( et même refermée juste avant la redirection, pour
faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au
navigateur client, comment le header peut-il s'exécuter, si rien ne doit
avoir été envoyé au client, pour que le header s'exécute ?
Oui, puisque tout ceci fait partie des entêtes HTTP. Le premier octet de contenu force à envoyer d'abord les entêtes suivis d'une ligne vide, mais tant que le premier octet n'est pas envoyé on peut continuer à définir d'autres entêtes (y compris pour définir une session).
Note que la bufferisation des données permet en outre de contourner cette limitation. Cf. la FAQ : <http://faqfclphp.free.fr/#rub2.12>.
Bonjour Monsieur
Merci beaucoup de votre réponse.
Mais... La session est ouverte avec session_init() au début du script, et le header de redirection avec header("Location: .$url), figure à la fin du script.
Le header de redirection va-t-il s'exécuter, sachant que la session a déjà été ouverte ( et même refermée juste avant la redirection, pour faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au navigateur client, comment le header peut-il s'exécuter, si rien ne doit avoir été envoyé au client, pour que le header s'exécute ?
Merci beaucoup.
Bien à vous.
Amicalement.
Jean-Francois Ortolo
Olivier Miakinen
Bonjour,
Mais... La session est ouverte avec session_init() au début du script,
Je suppose que tu voulais dire « session_start() ».
et le header de redirection avec header("Location: .$url), figure à la fin du script.
Si tu n'envoies aucun octet de donnée, il n'y a pas de raison que ça ne fonctionne pas.
Le header de redirection va-t-il s'exécuter, sachant que la session a déjà été ouverte ( et même refermée juste avant la redirection, pour faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au navigateur client, comment le header peut-il s'exécuter, si rien ne doit avoir été envoyé au client, pour que le header s'exécute ?
Que les sessions soient gérées par cookie ou par url, session_start() n'a strictement aucune raison d'envoyer le moindre octet dans la partie « données » (c'est-à-dire en dehors des entêtes).
Cela étant dit, je n'ai jamais utilisé les sessions, et si tu doutes tu peux toujours faire l'essai.
Bonjour,
Mais... La session est ouverte avec session_init() au début du
script,
Je suppose que tu voulais dire « session_start() ».
et le header de redirection avec header("Location: .$url),
figure à la fin du script.
Si tu n'envoies aucun octet de donnée, il n'y a pas de raison que ça ne
fonctionne pas.
Le header de redirection va-t-il s'exécuter, sachant que la session a
déjà été ouverte ( et même refermée juste avant la redirection, pour
faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au
navigateur client, comment le header peut-il s'exécuter, si rien ne doit
avoir été envoyé au client, pour que le header s'exécute ?
Que les sessions soient gérées par cookie ou par url, session_start()
n'a strictement aucune raison d'envoyer le moindre octet dans la partie
« données » (c'est-à-dire en dehors des entêtes).
Cela étant dit, je n'ai jamais utilisé les sessions, et si tu doutes tu
peux toujours faire l'essai.
Mais... La session est ouverte avec session_init() au début du script,
Je suppose que tu voulais dire « session_start() ».
et le header de redirection avec header("Location: .$url), figure à la fin du script.
Si tu n'envoies aucun octet de donnée, il n'y a pas de raison que ça ne fonctionne pas.
Le header de redirection va-t-il s'exécuter, sachant que la session a déjà été ouverte ( et même refermée juste avant la redirection, pour faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au navigateur client, comment le header peut-il s'exécuter, si rien ne doit avoir été envoyé au client, pour que le header s'exécute ?
Que les sessions soient gérées par cookie ou par url, session_start() n'a strictement aucune raison d'envoyer le moindre octet dans la partie « données » (c'est-à-dire en dehors des entêtes).
Cela étant dit, je n'ai jamais utilisé les sessions, et si tu doutes tu peux toujours faire l'essai.
Jean-Francois Ortolo
Bonjour,
Le header de redirection va-t-il s'exécuter, sachant que la session a déjà été ouverte ( et même refermée juste avant la redirection, pour faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au navigateur client, comment le header peut-il s'exécuter, si rien ne doit avoir été envoyé au client, pour que le header s'exécute ?
Que les sessions soient gérées par cookie ou par url, session_start() n'a strictement aucune raison d'envoyer le moindre octet dans la partie « données » (c'est-à-dire en dehors des entêtes).
Cela étant dit, je n'ai jamais utilisé les sessions, et si tu doutes tu peux toujours faire l'essai.
Bonjour Monsieur
Je croyais que les cookies faisaient partie des données.
Je vous prie de m'excuser pour mes questions stupides.
Effectivement, j'ai testé sur mon site, ça marche, ouf.
J'ai eu peur qu'il y ait un bug que je n'aurais pas vu.
Merci beaucoup pour votre réponse.
Bien à vous.
Jean-François Ortolo
Bonjour,
Le header de redirection va-t-il s'exécuter, sachant que la session a
déjà été ouverte ( et même refermée juste avant la redirection, pour
faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au
navigateur client, comment le header peut-il s'exécuter, si rien ne doit
avoir été envoyé au client, pour que le header s'exécute ?
Que les sessions soient gérées par cookie ou par url, session_start()
n'a strictement aucune raison d'envoyer le moindre octet dans la partie
« données » (c'est-à-dire en dehors des entêtes).
Cela étant dit, je n'ai jamais utilisé les sessions, et si tu doutes tu
peux toujours faire l'essai.
Bonjour Monsieur
Je croyais que les cookies faisaient partie des données.
Je vous prie de m'excuser pour mes questions stupides.
Effectivement, j'ai testé sur mon site, ça marche, ouf.
J'ai eu peur qu'il y ait un bug que je n'aurais pas vu.
Le header de redirection va-t-il s'exécuter, sachant que la session a déjà été ouverte ( et même refermée juste avant la redirection, pour faire bonne mesure ).
Si le fait de déclencher session_init() envoie quoi que ce soit au navigateur client, comment le header peut-il s'exécuter, si rien ne doit avoir été envoyé au client, pour que le header s'exécute ?
Que les sessions soient gérées par cookie ou par url, session_start() n'a strictement aucune raison d'envoyer le moindre octet dans la partie « données » (c'est-à-dire en dehors des entêtes).
Cela étant dit, je n'ai jamais utilisé les sessions, et si tu doutes tu peux toujours faire l'essai.
Bonjour Monsieur
Je croyais que les cookies faisaient partie des données.
Je vous prie de m'excuser pour mes questions stupides.
Effectivement, j'ai testé sur mon site, ça marche, ouf.
J'ai eu peur qu'il y ait un bug que je n'aurais pas vu.