PHP Sortie non HTML du serveur Web


Exemple

Dans certains cas, lorsque vous travaillez avec un serveur Web, il peut être nécessaire de remplacer le type de contenu par défaut du serveur Web. Il peut arriver que vous deviez envoyer des données en plain text , JSON ou XML , par exemple.

La fonction header() peut envoyer un en-tête HTTP brut. Vous pouvez ajouter l'en Content-Type tête Content-Type pour informer le navigateur du contenu que nous envoyons.

Considérez le code suivant, où nous définissons Content-Type comme text/plain :

header("Content-Type: text/plain");
echo "Hello World";

Cela produira un document en texte brut avec le contenu suivant:

Bonjour le monde

Pour produire du contenu JSON , utilisez plutôt le type de contenu application/json :

header("Content-Type: application/json");

// Create a PHP data array.
$data = ["response" => "Hello World"];

// json_encode will convert it to a valid JSON string.
echo json_encode($data);

Cela produira un document de type application/json avec le contenu suivant:

{"response": "Hello World"}

Notez que la fonction header() doit être appelée avant que PHP ne produise une sortie ou que le serveur Web ait déjà envoyé des en-têtes pour la réponse. Alors, considérez le code suivant:

// Error: We cannot send any output before the headers
echo "Hello";

// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";

Cela produira un avertissement:

Attention: Impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par (sortie démarrée à /dir/example.php:2) dans /dir/example.php sur la ligne 3

Lorsque vous utilisez header() , sa sortie doit être le premier octet envoyé par le serveur. Pour cette raison, il est important de ne pas avoir de lignes ou d’espaces vides au début du fichier avant la balise d’ouverture PHP <?php . Pour la même raison, il est recommandé de supprimer la balise de fermeture PHP ?> (Voir PSR-2 ) des fichiers contenant uniquement PHP et des blocs de code PHP situés à la toute fin d'un fichier.

Affichez la section de mise en mémoire tampon de sortie pour savoir comment «intercepter» votre contenu dans une variable à afficher ultérieurement, par exemple, après la sortie des en-têtes.