Header

[Résolu]
Signaler
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010
-
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010
-
bonjour
je débute en php et j'essaie de faire un site qui rassemble toutes les photos que j'ai prises lors de visites dans des beaux p'tits villages (http://www.beauxvillages.fr)
Sur la 1ère page on choisit la région, puis sur la 2ème le département, sur la 3ème le village, et hop on tombe sur la page d'index de l'album photo du village choisi. Enfin ça c'est la théorie, parce que cette dernière page s'ouvre vide...

voilà le code de cette fameuse page :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
header("location: http://www.beauxvillages.fr/albums/album_biron/index.html"); 
//header ("location: http://". $_SERVER['HTTP_HOST']. rtrim(dirname($_SERVER['PHP_SELF'])."albums/album_". $_POST['village']. "/index.html"));
?>
<html xmlns="http://www.w3.org/1999/xhtml">


<head>
<meta http-equiv="Content-Language" content="fr" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Beaux villages</title>
<link rel="stylesheet" type="text/css" href="res/styles_index.css" />
<style type="text/css">
body { background-image: url(res/bg.gif); background-repeat: repeat-x; }
</style>
</head>



</html>

je précise que le header même "en dur" ne fonctionne pas, et que si je fais un echo sur $_SERVER['HTTP_HOST']. rtrim(dirname($_SERVER['PHP_SELF'])."albums/album_". $_POST['village']. "/index.html")) j'obtiens bien www.beauxvillages.fr/albums/album_biron/index.html" (si le village choisi était biron)

quelqu'un voit-il où est le schmilblick ?

merci d'avance pour votre aide



Allez voir mes sites !

http://www.amis-marolles.orghttp://www.rando-marolles.fr, http://www.culturemusette.com

13 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
j'ai parfaitement compris ton probleme... comme je le disais plus haut, ta question revient deux fois par semaine...


la fonction header (php) modifie l'entete de la requete HTTP. Ca n'a rien a voir avec l'entete <head> de la page HTML... Ce sont DEUX choses DIFFERENTES.

si tu mets ton header AVANT tout envoi de HTML (comme je l'ai deja dit...), ca devrait fonctionner...
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

merci pour cette réponse rapide. Mais bonjour le charabia !
dois-je comprendre que mon problème est simplement un problème de \\ au lieu de // ? sinon l'emplacement est correct ?
sinon je vois pas... (de toute manière je ne peux pas essayer avant ce soir, chez moi)

Allez voir mes sites !
http://www.amis-marolles.orghttp://www.rando-marolles.fr, http://www.culturemusette.com
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

merci pour cette réponse rapide. Mais bonjour le charabia !
dois-je comprendre que mon problème est simplement un problème de \\ au lieu de // ? sinon l'emplacement est correct ?
sinon je vois pas... (de toute manière je ne peux pas essayer avant ce soir, chez moi)

Allez voir mes sites !
http://www.amis-marolles.orghttp://www.rando-marolles.fr, http://www.culturemusette.com
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
bonjour

cette question vient deux fois par semaine, si j'ai fait tout un "charabia", c'est POUR QU'ON LE LISE !

regarde la reponse du 13/06/2008 11:13:42

mon explication est longue, mais claire, elle explique le fonctionnement du protocol HTTP, et c'est ce qui te pose probleme.
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

le charabia c'était pas toi, c'était la question qui avait été posée au départ...
j'ai bien évidemment lu la réponse, mais je ne vois absolument pas en quoi elle m'éclaire, d'autant plus que mon site fonctionne à la perfection en local.
Un collègue de bureau me dit que comme j'ai un hébergement linux je dois mettre des \ et non des /, je vais donc essayer ce soir.
merci quand même

Allez voir mes sites !
http://www.amis-marolles.orghttp://www.rando-marolles.fr, http://www.culturemusette.com
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "sur http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd [ Lien ]">
<?php
header("location: sur http://www.beauxvillages.fr/albums/album_biron/index.html [ Lien ]");


ton header il est dans quelle partie de la reponse ? le header ou le content ?
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

j'ai lu dans de la doc (parce que j'ai cherché, faut pas croire) que le header devait être avant la balise <html>, c'est pourquoi j'ai mis la ligne à cet endroit.
Non ? pas bon ?

Allez voir mes sites !
http://www.amis-marolles.orghttp://www.rando-marolles.fr
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
pas bon du tout...

sur l'autre post, j'ai du marquer a un endroit :

Requette comme reponse sont composes de deux parties : l'entete et le corps (en anglais, header et body, que ceux qui n'aiment pas l'anglais y portent quand meme attention, ca a son importance) pour la requette, le body n'est pas forcement utilise.

Le header de la requette contient de nombreuses choses : la page sur laquelle on veut aller, le host (si vous avez plusieurs sites par machine, vous les diferenciez par cette variable, host c'est le nom de domaine qui sert a acceder a la page), le mode d'action (en general GET ou POST), le protocol (HTTP 1.0 ou 1.1), et des parametres plus optionels comme la page precedente, le navigateur, la langue, les types de documents acceptes... Et bien evidement, les cookies sont contenus dans le header de la requette...

Dans le cadre d'un GET, on n'utilise pas le corps, sinon, lors d'un POST, on envoi la taille, et les donnees envoyees ensuite.

Pour un POST de fichier, il y a plusieurs champs : le nom du fichiers, sa taille, son mimetype, et son contenu.

Pour la reponse du serveur, le header contient le status (404 non trouve, 403 forbiden, 501 = erreur, 200 = tout va bien ...), le mime type du document, son charset, les nouveaux cookies...

Ensuite, le corps de la reponse du serveur, ca peut-etre n'importe quoi...

alors seulement, le navigateur recoit cette reponse, la lit, et l'interprete a sa maniere (afficher un html, executer du javascript, ...)





et plus loin

php-header

En php, plusieurs fonctions utilisent le header (session_start, les cookies, ou tout simplement header), elles doivent etre appellees AVANT l'envoie du corps de la reponse, sinon, elles ne peuvent pas envoyer de header... Pour cette raison, on peut utiliser ob_start pour masquer l'envoie de html (mais c'est pas joli joli non plus...) cf php.net pour les fonctions ob_start et ob_end_flush.



dans ton code, ceci :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "sur http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd [ Lien ]">
c'est dans quoi ? le corps ou l'entete ?
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

c'est bien que tu me fasses mettre le doigt sur mes erreurs, mais je vois pas.
Ce que tu me dis, le doctype machin chose pour moi c'est l'entete. Mais je ne vois pas le rapport avec ce que tu mets avant ; pour moi il n'est pas question de requête à cet endroit ; j'en ai fait avant, j'ai fini par obtenir un nom de village, et dans cette fameuse page je construis une adresse html que je mets en paramètre d'un header pour rediriger sur la bonne page.
Et quand je dis "header" je parle fonction php, pas "entete", c'est pas là qu'on ne se comprendrait pas ?

Allez voir mes sites !
http://www.amis-marolles.orghttp://www.rando-marolles.fr
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

eh bien écoute.... dès que je suis rentré chez moi j'essaie ce que tu me dis et je te tiens au courant sur ce forum. Il me tarde d'être à ce soir !
merci encore pour ton aide et à +

Allez voir mes sites !
http://www.amis-marolles.orghttp://www.rando-marolles.fr, http://www.culturemusette.com
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
plus d'explications ici :
http://82.127.116.43:8180/ouaib/index.html?snippet=0

ca ne fonctionne que quand mon pc est allume par contre :)
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

super ! ça marche !

merci encore, à+

Allez voir mes sites !
http://www.amis-marolles.orghttp://www.rando-marolles.fr, http://www.culturemus%3C/body