8792 sujets

Développement web côté serveur, CMS

Pages :
(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 Smiley murf ).
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 Smiley smile pour ma part c'est comme ca que j'ai fais Smiley langue


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 Smiley cligne
Modifié par HyWaN (29 Jul 2006 - 22:14)
merci bien HyWaN j'en prends note !

sinon concernant header tu confirmes que la redirection a lieu après que tout le code php soit executé (et que c'est un comportement normal) ?
hmm là je ne suis pas sûr
mais PHP est interpréter, donc il ne me semble pas que tout le code soit exécuté (sauf si buffer) mais ca reste à confirmer
et si tout le code s'execute, oui alors c'est normal et j'ai tord ^^ lol
Pages :