(reprise du message précédent)
bonsoir
l'utilisation des en-têtes en PHP doit se faire avant l'affichage d'un code HTML.
si vous avez déjà un code PHP, et que vous placez un header(); n'importe où dans ce code, il n'y a pas de problème (mais attention à ce que ce soit bien propre
).
en revanche, si vous affichez du code automatiquement HTML (echo 'str';), l'utilisation de header(); doit être oublié pour la suite de votre code.
sauf si vous placez la page dans un tampon (buffer).
cette utilisation est courante et nous enlève les casses-têtes de ces redirections ou autres utilisations des en-têtes.
un exemple me parait plus simple :
un header mais pas de code HTML
un header et du code HTML après
pas de probleme.
un header et du code HTML avant
donc il faudrait placer un tampon pour que ce dernier code fonctionne.
ob_start(); démarre la mise en tampon
ob_end_flush(); éteint le tampon et envoie les données
ob_end_clean(); détruit les données du tampon
ce dernier code est parfaitement correct, et évite le casse-tête de l'emplacement des header(); mais aussi pour l'utilisation des cookies (setcookie).
de plus il accélére légèrement la génération du document (il me semble)
pour plus d'informations
http://fr.php.net/manual/fr/ref.outcontrol.php
l'utilisation du manuel est la meilleur facon d'apprendre
pour ma part c'est comme ca que j'ai fais
concernant la redirection, je conseille vivement header.
le meta refresh et le javascript n'est pas correct vis à vis du référencement, et comme la fait remarquer Sol, header est nettement plus rapide.
je vous souhaite de bonne nuit en perspective
Modifié par HyWaN (29 Jul 2006 - 22:14)
bonsoir
l'utilisation des en-têtes en PHP doit se faire avant l'affichage d'un code HTML.
si vous avez déjà un code PHP, et que vous placez un header(); n'importe où dans ce code, il n'y a pas de problème (mais attention à ce que ce soit bien propre

en revanche, si vous affichez du code automatiquement HTML (echo 'str';), l'utilisation de header(); doit être oublié pour la suite de votre code.
sauf si vous placez la page dans un tampon (buffer).
cette utilisation est courante et nous enlève les casses-têtes de ces redirections ou autres utilisations des en-têtes.
un exemple me parait plus simple :
un header mais pas de code HTML
$a = 1;
$b = 2;
if($a == $b)
header('location: url');
un header et du code HTML après
$a = 1;
$b = 2;
if($a == $b)
header('location: url');
else
echo 'a est différent de b';
pas de probleme.
un header et du code HTML avant
$a = 1;
$b = 2;
if($a == $b)
echo 'a est égal à b';
else
header('location: url');
donc il faudrait placer un tampon pour que ce dernier code fonctionne.
ob_start();
$a = 1;
$b = 2;
if($a == $b)
echo 'a est égal à b';
else
header('location: url');
ob_end_flush();
ob_end_clean();
ob_start(); démarre la mise en tampon
ob_end_flush(); éteint le tampon et envoie les données
ob_end_clean(); détruit les données du tampon
ce dernier code est parfaitement correct, et évite le casse-tête de l'emplacement des header(); mais aussi pour l'utilisation des cookies (setcookie).
de plus il accélére légèrement la génération du document (il me semble)
pour plus d'informations
http://fr.php.net/manual/fr/ref.outcontrol.php
l'utilisation du manuel est la meilleur facon d'apprendre


concernant la redirection, je conseille vivement header.
le meta refresh et le javascript n'est pas correct vis à vis du référencement, et comme la fait remarquer Sol, header est nettement plus rapide.
je vous souhaite de bonne nuit en perspective

Modifié par HyWaN (29 Jul 2006 - 22:14)