Noplay >>Développement

version imprimable

Pourquoi il ne faut pas utiliser ?>

le mardi 7 octobre 2008 par
Noplay

sommaire

Le problème
La solution



La plupart des codes PHP ressemblent à cela :


<?php
echo "Hello";
?>
 

Cela marche très bien. Le problème c’est que si vous laissez des espaces après le tag fermant il seront aussi envoyé aux navigateurs. Quel est le soucis me direz vous ?

Le problème

Imaginons que vous vouliez générer un fichier binaire comme par exemple une image, les espaces supplémentaires risque de corrompre le fichier.

Autres problèmes plus courant c’est dans le cadre de l’utilisation de session. Nous avons deux fichier

lib.php :


<?php
function hello() {
}
?>

PLEIN D ESPACES
 

index.php :

<?php
include("lib.php");
session_start();
?>

Vous allez voir ce type d’erreur : Warning : session_start() : Cannot send session cookie - headers already sent by

En effet le mécanisme de session de PHP nécessite de modifier les headers HTTP et lorsque PHP voit le premier caractère du contenu de la page il envoi les headers.

La solution

La solution est de ne pas mettre le tag fermant votre code marchera parfaitement et vous éliminés le risque de caractères parasites.



commentaires (3 message(s))

Pourquoi il ne faut pas utiliser ?>
le 8 octobre , par Hugo:
C’est aussi plus esthétique de ne pas avoir les tags de fin. D’ailleurs si l’on pouvait omettre également les tags de début ce serait aussi cool :)

Ou bien ...
le 8 octobre , par :
On peut tout simplement avoir un peu de rigueur et/ou utiliser un éditeur de texte qui supprime automatiquement les caractères superflus en fin de ligne. C’est tout de même plus élégant...

  • Ou bien ...
    le 8 octobre , par :

    Mais l’experience prouve qu’il y a toujours un petit malin dans l’équipe qui ne le fait pas.

Répondre à cet article

Un message, un commentaire ?

(Pour créer des paragraphes, laissez simplement des lignes vides.)

Lien hypertexte (optionnel)

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d'informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Qui êtes-vous ? (optionnel)


captcha



Webmaster Noplay