begin process at 2012 02 15 14:09:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Rafraichissement de page


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Rafraichissement de page

vendredi 22 février 2008 à 22:54:25 | Rafraichissement de page

PHIL63

Membre Club
Bonjour à toutes et à tous,

Voici mon souci :
J'aurais besoins en fin de fichier index.php (juste avant un dernier 'include') de forcer le réaffichage de cette page pour mettre à jour certains liens.
j'ai tenté avec un header("Refresh : 0; URL=" . Chemin_complet . "index.php");
mais cela ne fonctionne que pour un seul ordinateur, dès qu'un deuxième rafraichi sa page j'obtiens le message d'eereur suivant :

Warning: Cannot modify header information - headers already sent by (output started at /home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/forum_xxxxx/cache/tpl_Orange.index_body.php:163) in /home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/forum_xxxxx/index.php on line 1426

Quelqu'un aurait-il une solution à m'apporter en sachant que PHP n'est pas mon langage de prédilection (vous l'aurez compris)

Merci d'avoir au moins pris le temps de lire ce message.

Philippe DROUET
samedi 23 février 2008 à 01:39:48 | Re : Rafraichissement de page

coucou747

Administrateur CodeS-SourceS
salut
c'est un classique...
ce sujet est poste CHAQUE SEMAINE...

j'ai ecris ca l'autre jours :

Qu'est-ce-que le HTTP ?

Preface

Ce tuto est pour debutant, je n'ai pas le niveau pour ecrire plus, alors je vous le dit tout de suite, il est TRES incomplet... J'en ai simplement marre des erreurs de header sur phpcs, de session_start, setcookie et autre, et marre des confusions php / javascript ; alors j'explique comment se deroule une requete HTTP simple...

Intro : connection ? qu'est-ce-que c'est ?

Une connection est dite etablie lorsqu'un client ouvre un socket vers un serveur. Un serveur qu'est-ce-que c'est ? C'est un programme qui ecoute (fonction listen) un port. Je ne reviendrais pas sur ce que c'est qu'un port... Un client qu'est-ce-que c'est ? C'est un programme qui se connecte a un serveur, a l'aide d'un couple (ip, port). le client et le serveur peuvent alors communiquer, ils utilisent pour cela un protocol (un protocol est une norme qui regit la facon dont ils doivent parler pour se comprendre) le protocol est decrit dans des rfc (donc si vous cherchez de la doc sur un protocol, tapez rfc + nom du protocol sur google).

Description

Le HTTP est un protocol : hypertext transfert protocol, wikipedia. Deux programmes discutent, un navigateur internet (opera, firefox, MSIE, galeon, lynx, et plus si affinites), et un serveur web (apache, IIS, ...). Ils ont une facon de discuter bien cadree, comme tout protocol, cette facon de discuter est decrite dans une RFC.

Une discution simple se deroule en deux temps : le navigateur parle, puis envoie deux lignes vides (une ligne se termine par \r\n), ensuite c'est le serveur qui parle, et enfin, la discution se termine. On appellera par la suite les parolles du navigateur la requette, et la reaction du serveur la reponse. (on neglige dans ce tuto le keep alive qui permet de faire plusieurs requetes en une seule connection)

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, ...)

Exemple en telnet

max@debian:~$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.localhost


HTTP/1.1 200 OK
Date: Wed, 20 Feb 2008 14:03:09 GMT
Server: Apache/2.2.8 (Debian) PHP/5.2.5-2 with Suhosin-Patch
X-Powered-By: PHP/5.2.5-2
Transfer-Encoding: chunked
Content-Type: text/html

42bc

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
[...]

En bleu, vous avez ce que le navigateur envoie, en orange, le header de la reponse, et en vert, le contenu de la page.

Si le navigateur avait du transmettre des cookies, il l'aurait fait "en bleu"

Si le serveur avait du envoyer de nouveaux cookies (ou modifier les valeurs des anciens), il l'aurait fait "en orange"

En php, chaque fois que vous faites un echo, print, ou chaque fois que vous avec des caracteres qui ne sont pas entre <?php et ?>, le serveur l'envoie en vert... Il lui est alors impossible par la suite d'envoyer du orange...

Erreurs courantes

js - php

Si vous programmez en PHP, PERL, ASP, java en mode servelets, .... (autres langages serveurs), ces langages sont executes a partir de la reception de la requette chez le serveur, et leur execution se termine a la fin de l'envoi de la reponse... ce n'est qu'ensuite que s'execute les langages clients (flash, javascript, applets java ...), donc le code suivant ne marche pas :

<script type="text/javascript">
a=document.getElementById('input').value;
<?php
$a=a;
?>
pour la simple raison que quand javascript s'execute, php a deja fait son travail ! quand le client recoit la reponse, il n'y a plus de php dans le message...

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.

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
samedi 23 février 2008 à 08:11:34 | Re : Rafraichissement de page

PHIL63

Membre Club
C'est peut être un classique pour toi, mais fais donc une recherche sur ce site avec les mots "rafraichir page" "redirection page" (et j'en passe et des meilleurs) et bien aucune des réponses retournées ne m'a aidé....

Merci tout de même pour ce cours, même si ça ne m'a pas apporté de solution....
Je ne demandais pas de renseignement sur mon erreur due à Header() (j'avais déjà été voir ceci : http://be.php.net/manual/fr/function.header.php) mais une autre solution (qui peut être n'existe pas après tout...)

J'essaierais de me débrouiller autrement.

Philippe DROUET
samedi 23 février 2008 à 13:28:06 | Re : Rafraichissement de page

coucou747

Administrateur CodeS-SourceS
Réponse acceptée !
c'est header already sent qu'il fallait chercher...

la solution comme je l'ai mis, c'est de faire ton header AVANT l'envoie de html via echo ou autre... ou bien de retarder les echo avec un truc genre ob_start

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
samedi 23 février 2008 à 14:12:37 | Re : Rafraichissement de page

PHIL63

Membre Club
Réponse acceptée !
J'ai déplacé ma ligne header(....) un peu plus haut dans le code et ça fonctionne.
Merci quand même pour le temps que tu as pris pour lire mes questions et me répondre


Philippe DROUET
vendredi 31 octobre 2008 à 18:00:55 | Re : Rafraichissement de page


Cette discussion est classée dans : page, php, header, index, rafraichissement


Répondre à ce message

Sujets en rapport avec ce message

HELP***Header ????!!!!??????*** [ par kodiask ] alor g mon index et dedan kan je clik g include("membres.php") dans ma page membre g :session_start()if (session_is_registered('login)'){header("loca Site en une page [ par Gamer13 ] slt,pour faire mon site en une page g utilisé ce script php//Recupere ta variable depuis l'url $module = $_GET['module']; //Si le module existe if(is_ Include php [ par FearBlue ] Salut a tous !!!!J'ai un probleme avec la fonction includema page index.phpcontient un code genre ca:include($page);lorsque je fais ca :index.php?page rafraichissement [ par salley ] bonjour, bonjour,Voila j'ai un probleme, ja'aimerais rafraichir une page php 1 seule fois. J'ai a peu pres tout essayer notamment en utilisant des fon robleme de variable PHP 1.7 [ par rich25200 ] bonjour,j'utilise easyPHP 1.7 et j'ai un proble de variable..J'ai ma page index.php et lorsque je clique sur un lien j'envoie la meme page avec des va Cherche Script PHP [ par ykc ] Bonjour,Je cherche 1 script php qui me permettrait par methode d'"include()" de n'avoir que la page index.php et les autres s'afficheraien dedans avec location [ par rich25200 ] Bonjour,j'aimerai sur mon site d'accueil index.php lorsque quelqu'un arrive j'ai une variable et en fonction de la variable il est diriger vers une ad header [ par panpan ] Hello,Est ce que quelqu'un aurait une idée d'ou pourrait venir cette erreur?Warning: Cannot add header information - headers already sent by (output s lien php aider je débute please [ par ArC3Nik ] Bonjour J'ai créer un page mon index.php,j'ai inclu mon menu a gauche et par defaultma page news.php au centre.Je voudrait que quand je clic sur un au Problème de rafraichissement [ par lock07 ] Bonjour à tous,mon problème est un problème de rafraichissement, je ne sais pas si c'est du php ou du html (mais je pense que c'est du html) donc je p


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales