Cours par Webcam

Cours par Webcam

Formateur Web pour adultes depuis plus 11 ans, je vous propose des COURS collectifs par WEBCAM en LIVE pour booster vos connaissances et être autonome dans la création de site.

En savoir plus

PHP - Bases

PHP - Algorithmie

PHP - Chaîne

PHP - Tableau

PHP - Formulaires

PHP - Fonctions Usuelles

Données entres pages

Environnement et Interaction

PHP objet (POO)

Facebook
Twitter
LinkedIn

Les en-têtes en PHP

Dans l’environnement web, on peut distinguer deux acteurs : le serveur qui fournit le contenu et le navigateur (le client) qui demande du contenu: c’est le modèle client-serveur.

C’est le protocole HTTP qui rapatrie le contenu fournit par le serveur sur la page. Dans le dialogue entre le serveur et le navigateur, on distingue deux informations différentes :

Un bloc d’en-têtes qui correspond aux messages techniques échangés entre le serveur et le navigateur. La fonction PHP header() permet d’agir sur ces en-têtes. A noter que la fonction header() n’est pas la seule fonction d’en-têtes, les fonctions setcookie() et session-start() agissent aussi sur les en-têtes.

Le contenu qui vient ensuite et qui constitue la page visualisée. Ce contenu est séparé du bloc d’en-têtes par une ligne vide. Si cette ligne est envoyée, le contenu s’affiche mais il ne sera plus possible de définir des en-têtes. Il ne faut donc aucun affichage de contenu avant l’utilisation d’une fonction d’en-têtes.

Chaque ligne d’en-têtes est composée d’un nom décrivant le type d’en-têtes suivi du caractère et d’une valeur, par exemple « Content-Type: image/jpeg ».

En-tetes de redirection

Le type location permet de définir une redirection vers une autre page

<?php
// redirection vers tutovisuel.com
header("location:https://tutowebdesign.com/");
?>

Note : ne mettez pas d’espace après les deux points ‘:’. De plus il ne faut pas que du code soit exécutée après la redirection.

Définir le contenu de l’en-tête

Vous pouvez indiquer le type de contenu à afficher sur une page avec le nom Content-Type. L’exemple ci dessous concerne l’affichage d’une image directement dans la page avec la fonction imagejpeg() (et non pas avec une balise html).

<?php
// Définit le contenu de l'en-tête - dans ce cas, image/jpeg
header('Content-Type: image/jpeg');
 
// Affichage de l'image
imagejpeg($image);
?>

Voir notre tutoriel sur la gestion des images.

Forcer le téléchargement

Le principe consiste à obliger le navigateur l’enregistrement d’un fichier sur votre machine plutôt que de l’afficher.

On indique d’abord le type de contenu à afficher (dans ce cas un document pdf), et on va attacher le fichier avec le type d’en-tête Content-Disposition puis enregistrer le fichier avec un nouveau nom grâce à la commande filename. La fonction readfile() permet de lire le fichier et l’envoie dans le buffer de sortie.

Quand le contenu est généré dynamiquement il ne faut pas le mettre dans le cache. Pour cela le type Cache-Control sera utilisé. Et on gèle la réponse de l’en-têtes avec le type Expire.

<?php
// Flux de sortie de type PDF
header('Content-type: application/pdf');
 
// Il sera appelé monPdf.pdf
header('Content-Disposition: attachment; filename="monPdf.pdf"');
 
// interdit la mise en cache
header("Cache-Control: no-cache, must-revalidate");
 
// on gèle la réponse de l'en-tête (déjà expiré dans le passé)
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
 
// On lit la source du PDF
readfile("PHPFonctions_Mysql.pdf");
?>

Vous pouvez modifier la valeur type Mine du ‘Content-type’ si vous souhaitez fournir un autre type de fichier (images, vidéos..).

Autoriser le Cross-domain

Par défaut seules les pages d’un même domaine peuvent utiliser les ressources du serveur. Par exemples, le site Tutovisuel.com ne peut pas échanger des données avec le site Alsacréation.com.

On peut toutefois spécifier des sites Web qui peuvent participer au partage des ressources avec le type d’en-tête Access-Control-Allow-Origin.

Dans ce cas le croisement de domaine peut se faire, et les données de différents sites peuvent communiquer. Ce peut aussi s’avérer utile pour les applications mobiles hybrides qui ont besoin de lancer des requêtes (avec la technologie AJAX) sur un domaine web pour acheminer, sur le terminal mobile, des informations enregistrées dans une base de données.

<?php
// on autorise tous les sites
header("Access-Control-Allow-Origin: *");
 
// l'autorisation est limitée à ce domaine
header("Access-Control-Allow-Origin: http://www.lui.com");
?>

 

A lire aussi

tutowebdesign

Afficher du contenu au scroll

Afficher du contenu au scroll Voici un effet impressionnant et pourtant très facile à mettre en place sur vos pages. Le principe consiste à faire

Lire »