J'apprend le php et y a un truc que j'ai pas compris
Dans la doc il y a ecrit qu'une commande heaer doit forcement être envoye en premier dans une page.
Idem pour une commande setcookies.
ALors comment on fair si dans la même page on veux envoyer une commande header et une commande setcookies ?
Merci de votre aide.
On utilise un bufferisation de sortie ; )
ob_start(); Ton script ob_end_flush();
@+ cepiat
Benoit F
francois wrote:
ALors comment on fair si dans la même page on veux envoyer une commande header et une commande setcookies ?
En fait ces deux commande permettent de completer l'entete HTTP. Comme son nom l'indique c'est un entete, il précède donc le contenu qui lui s'affiche dans le navigateur. Php peut mettre des infos dans l'entete grace à header mais aussi setcookie. Mais dés que tu fait un print ou un echo tu écrit dans le corps du message. C'est pour cela qu'il y a écrit dans le manuel que ces deux fonctions doivent être obligatoirement avant tout affichage (et pas toute autre fonction).
une solution autre solution consiste à utiliser ob_start() et ob_end_flush() pour permettre de mettre les header n'importe où.
-- Benoit F.
francois wrote:
ALors comment on fair si dans la même page on veux envoyer une commande
header et une commande setcookies ?
En fait ces deux commande permettent de completer l'entete HTTP. Comme
son nom l'indique c'est un entete, il précède donc le contenu qui lui
s'affiche dans le navigateur.
Php peut mettre des infos dans l'entete grace à header mais aussi
setcookie. Mais dés que tu fait un print ou un echo tu écrit dans le
corps du message.
C'est pour cela qu'il y a écrit dans le manuel que ces deux fonctions
doivent être obligatoirement avant tout affichage (et pas toute autre
fonction).
une solution autre solution consiste à utiliser ob_start() et
ob_end_flush() pour permettre de mettre les header n'importe où.
ALors comment on fair si dans la même page on veux envoyer une commande header et une commande setcookies ?
En fait ces deux commande permettent de completer l'entete HTTP. Comme son nom l'indique c'est un entete, il précède donc le contenu qui lui s'affiche dans le navigateur. Php peut mettre des infos dans l'entete grace à header mais aussi setcookie. Mais dés que tu fait un print ou un echo tu écrit dans le corps du message. C'est pour cela qu'il y a écrit dans le manuel que ces deux fonctions doivent être obligatoirement avant tout affichage (et pas toute autre fonction).
une solution autre solution consiste à utiliser ob_start() et ob_end_flush() pour permettre de mettre les header n'importe où.
-- Benoit F.
ED
cepiat wrote:
ALors comment on fair si dans la même page on veux envoyer une commande header et une commande setcookies ? On utilise un bufferisation de sortie ; )
ob_start(); Ton script ob_end_flush();
Mais non mais non, pas besoin.
En fait dire que ça doit être envoyé en premier est un abus de langage, pour simplifier.
Pour être plus précis, on doit faire appel à ces fonctions (ainsi qu'à toutes celles qui peuvent agir sur les entêtes HTTP) avant d'envoyer le mondre contenu sur la page.
Tant que tu ne fais aucun echo, aucun print, que tu ne sors pas des balises PHP, que tu n'écris rien sur la page .... tu peux faire toutes les actions que tu veux, faire tous les cookies que tu veux, envoyer des entêtes HTTP avec header, initialiser le gestionnaire de session.
set_cookie(), header() ou session_start agissent au même niveau : dans les entêtes HTTP. Si tu commences le contenu de la page tu ne pourras plys y toucher, mais tant que ce n'est pas fait, aucun ordre n'est requis.
-- Eric Daspet * Vous cherchez une doc sur PHP 5 ? *PHP 5 avancé*, aux éditions Eyrolles http://www.eyrolles.com/Informatique/Livre/9782212113235/-PHP-5-avance
cepiat wrote:
ALors comment on fair si dans la même page on veux envoyer une commande
header et une commande setcookies ?
On utilise un bufferisation de sortie ; )
ob_start();
Ton script
ob_end_flush();
Mais non mais non, pas besoin.
En fait dire que ça doit être envoyé en premier est un abus de langage,
pour simplifier.
Pour être plus précis, on doit faire appel à ces fonctions (ainsi qu'à
toutes celles qui peuvent agir sur les entêtes HTTP) avant d'envoyer le
mondre contenu sur la page.
Tant que tu ne fais aucun echo, aucun print, que tu ne sors pas des
balises PHP, que tu n'écris rien sur la page .... tu peux faire toutes
les actions que tu veux, faire tous les cookies que tu veux, envoyer des
entêtes HTTP avec header, initialiser le gestionnaire de session.
set_cookie(), header() ou session_start agissent au même niveau : dans
les entêtes HTTP. Si tu commences le contenu de la page tu ne pourras
plys y toucher, mais tant que ce n'est pas fait, aucun ordre n'est requis.
--
Eric Daspet
*
Vous cherchez une doc sur PHP 5 ? *PHP 5 avancé*, aux éditions Eyrolles
http://www.eyrolles.com/Informatique/Livre/9782212113235/-PHP-5-avance
ALors comment on fair si dans la même page on veux envoyer une commande header et une commande setcookies ? On utilise un bufferisation de sortie ; )
ob_start(); Ton script ob_end_flush();
Mais non mais non, pas besoin.
En fait dire que ça doit être envoyé en premier est un abus de langage, pour simplifier.
Pour être plus précis, on doit faire appel à ces fonctions (ainsi qu'à toutes celles qui peuvent agir sur les entêtes HTTP) avant d'envoyer le mondre contenu sur la page.
Tant que tu ne fais aucun echo, aucun print, que tu ne sors pas des balises PHP, que tu n'écris rien sur la page .... tu peux faire toutes les actions que tu veux, faire tous les cookies que tu veux, envoyer des entêtes HTTP avec header, initialiser le gestionnaire de session.
set_cookie(), header() ou session_start agissent au même niveau : dans les entêtes HTTP. Si tu commences le contenu de la page tu ne pourras plys y toucher, mais tant que ce n'est pas fait, aucun ordre n'est requis.
-- Eric Daspet * Vous cherchez une doc sur PHP 5 ? *PHP 5 avancé*, aux éditions Eyrolles http://www.eyrolles.com/Informatique/Livre/9782212113235/-PHP-5-avance
Noe
"francois" a écrit dans le message de news:
Bonjour,
J'apprend le php et y a un truc que j'ai pas compris
Dans la doc il y a ecrit qu'une commande heaer doit forcement être envoye en premier dans une page.
Idem pour une commande setcookies.
Je ne sais pas quelle traduction de la doc tu utilises, mais elle me paraît plus ou moins farfelue. Sur PHP.net, on peut lire :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP.
Donc, pas forcément en premier dans une page. Simplement, AVANT toute envoi de contenu (inclusion HTML, echo, printf ...), ou avec protection par un ob_start()...
ALors comment on fair si dans la même page on veux envoyer une commande header et une commande setcookies ?
Pareil pour setcookie, à envoyer AVANT tout contenu. Sachant que header() ne produit pas un contenu mais un en-tête, forcément, ça marche.
N.O.E.
"francois" <fr@jhfg.hh> a écrit dans le message de
news:40D4904F.1E435339@jhfg.hh...
Bonjour,
J'apprend le php et y a un truc que j'ai pas compris
Dans la doc il y a ecrit qu'une commande heaer doit forcement être
envoye en premier dans une page.
Idem pour une commande setcookies.
Je ne sais pas quelle traduction de la doc tu utilises, mais elle me paraît
plus ou moins farfelue. Sur PHP.net, on peut lire :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu
ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit
par des affichges PHP.
Donc, pas forcément en premier dans une page. Simplement, AVANT toute envoi
de contenu (inclusion HTML, echo, printf ...), ou avec protection par un
ob_start()...
ALors comment on fair si dans la même page on veux envoyer une commande
header et une commande setcookies ?
Pareil pour setcookie, à envoyer AVANT tout contenu. Sachant que header() ne
produit pas un contenu mais un en-tête, forcément, ça marche.
J'apprend le php et y a un truc que j'ai pas compris
Dans la doc il y a ecrit qu'une commande heaer doit forcement être envoye en premier dans une page.
Idem pour une commande setcookies.
Je ne sais pas quelle traduction de la doc tu utilises, mais elle me paraît plus ou moins farfelue. Sur PHP.net, on peut lire :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP.
Donc, pas forcément en premier dans une page. Simplement, AVANT toute envoi de contenu (inclusion HTML, echo, printf ...), ou avec protection par un ob_start()...
ALors comment on fair si dans la même page on veux envoyer une commande header et une commande setcookies ?
Pareil pour setcookie, à envoyer AVANT tout contenu. Sachant que header() ne produit pas un contenu mais un en-tête, forcément, ça marche.
N.O.E.
Vinz
et dans le genre de conneries que j'ai mis des heures à trouver quand je débutais, il y a le classique "espace" avant la balise <? qui fait qu'on ne peut plus envoyer les entêtes après. à bon entendeur...
-- Vinz
et dans le genre de conneries que j'ai mis des heures à trouver quand je
débutais, il y a le classique "espace" avant la balise <? qui fait qu'on ne
peut plus envoyer les entêtes après.
à bon entendeur...
et dans le genre de conneries que j'ai mis des heures à trouver quand je débutais, il y a le classique "espace" avant la balise <? qui fait qu'on ne peut plus envoyer les entêtes après. à bon entendeur...
-- Vinz
Fred
héhé :-) tiens ca me rappelle pas mal de souvenir !
"Maaaaaaaaaais bon saaaaaaaang elle est vide mon entete !!!" aaaaargfhhhhhhhhhhh !! :-pp
"Vinz" a écrit dans le message de news:cb69ma$q0f$
et dans le genre de conneries que j'ai mis des heures à trouver quand je débutais, il y a le classique "espace" avant la balise <? qui fait qu'on ne
peut plus envoyer les entêtes après. à bon entendeur...
-- Vinz
héhé :-)
tiens ca me rappelle pas mal de souvenir !
"Maaaaaaaaaais bon saaaaaaaang elle est vide mon entete !!!"
aaaaargfhhhhhhhhhhh !!
:-pp
"Vinz" <vfuchs@hotmail.com> a écrit dans le message de
news:cb69ma$q0f$1@s1.read.news.oleane.net...
et dans le genre de conneries que j'ai mis des heures à trouver quand je
débutais, il y a le classique "espace" avant la balise <? qui fait qu'on
ne
peut plus envoyer les entêtes après.
à bon entendeur...