Headers - Academie pro

Transcription

Headers - Academie pro
PHP – Master CCI
Bertrand Estellon
Aix-Marseille Université
January 30, 2014
..
Bertrand Estellon (AMU)
PHP – Master CCI
.
..
.
..
.
. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..
January 30, 2014
.
..
.
..
.
..
.
..
1 / 177
.
PHP
Headers
Introduction
Headers
Protocole HTTP
1. Je veux toto.html
Serveur
Client
2. Contenu de toto.html
Requête :
GET /toto.html HTTP/1.0
Host: example.com
Referer: http://example2.com/
User-Agent: Mozilla/5.0 (X11; U; Linux
x86_64; fr; rv:1.9.0.4) Gecko/2008111217
Fedora/3.0.4-1.fc10 Firefox/3.0.4
Réponse :
HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Server: Apache/0.8.4
Content-Type: text/html
Content-Length: 59
Expires: Sat, 01 Jan 2000 00:59:59 GMT
Last-modified: Fri, 09 Aug 1996 14:21:40
GMT
<TITLE>Exemple</TITLE>
<P>page d’exemple.</P>
.
. . . . . . . . . . . . . .
.
.
.
..
Bertrand Estellon (AMU)
PHP – Master CCI
..
..
.. .. .. ..
.. .. .. ..
.. .. .. ..
January 30, 2014
..
..
..
..
.
..
102 / 177
.
PHP
Headers
Modification des headers
Modification des headers
▶
La fonction header(...) permet d’ajouter (ou de modifier) des
informations présentes dans l’en-tête retourné au client :
<?
...
if ($autorized) { ?>
<html>
<body>
Bienvenue</br>
</body>
</html>
<? } else
header('Location: http://www.google.fr');
?>
▶
La fonction header doit être appelée avant que le moindre contenu
ne soit envoyé
..
Bertrand Estellon (AMU)
PHP – Master CCI
.
..
.
..
.
. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..
January 30, 2014
.
..
.
..
.
..
.
..
103 / 177
.
PHP
Headers
Page non trouvée
Error 404 : Page Not Found
▶
Pour simuler le fait qu’une page n’a pas été trouvée sur le serveur :
<?
header("HTTP/1.0 404 Not Found");
exit; // Termine l'exécution du programme.
echo "Bienvenue"; // Cette instruction
// n'est pas exécutée.
?>
▶
Attention :
<?
header("HTTP/1.0 404 Not Found");
echo "Bienvenue"; // "Bienvenue" est envoyé au client...
exit; // trop tard !
?>
..
Bertrand Estellon (AMU)
PHP – Master CCI
.
..
.
..
.
. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..
January 30, 2014
.
..
.
..
.
..
.
..
104 / 177
.
PHP
Headers
Redirection
Redirection
▶
Pour rediriger le client vers une autre page :
<?
if (!$autorized) {
header('Location: http://www.google.fr');
exit; // pour éviter que la suite
// ne soit envoyé au client...
}
...
?>
▶
Pour rediriger le client après un certain délai :
<?
echo "Vous allez etre redirige...<br/>"
header('Refresh:10; http://www.newsite.fr');
?>
..
Bertrand Estellon (AMU)
PHP – Master CCI
.
..
.
..
.
. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..
January 30, 2014
.
..
.
..
.
..
.
..
105 / 177
.
PHP
Headers
Content-Type et Content-Disposition
Content-Type et Content-Disposition
▶
Il est possible d’envoyer un fichier texte en PHP :
<?
header('Content-Type: text/plain');
header('Content-Disposition: attachement;filename="a.txt"');
?>
contenu du fichier texte
▶
Il est également possible d’envoyer une image :
<?
header('Content-Type: image/jpeg');
header('Content-Disposition: attachement;filename="a.jpg"');
readfile("image.jpg"); // écrit le contenu du fichier ici !
?>
.
. . . . . . . . .
..
Bertrand Estellon (AMU)
PHP – Master CCI
..
..
.. .. .. ..
.. .. .. ..
.
. . . .
.. .. .. .. ..
January 30, 2014
.
..
.
..
.
..
.
..
106 / 177
.
PHP
Headers
Content-Type et Content-Disposition
Application : restreindre l’accès à un fichier
▶
Il est possible de restreindre l’accès à un fichier :
<?
/* ... Initialisation de la variable "accespossible" */
if ($accespossible) {
header('Content-Type: application/pdf');
header('Content-Disposition: attachement;filename="a.pdf"');
readfile('doc.pdf');
exit;
} else { ?>
<html>
<body>
Vous n'avez pas acces a ce fichier !<br/>
</body>
</html>
<? }
?>
▶
Attention : le fichier ne doit pas être accessible directement sur le
serveur, c’est-à-dire, sans utiliser ce fichier php.
..
Bertrand Estellon (AMU)
PHP – Master CCI
.
..
.
..
.
. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..
January 30, 2014
.
..
.
..
.
..
.
..
107 / 177
.
PHP
Headers
Content-Type et Content-Disposition
Types MIME (Multipurpose Internet Mail Extensions)
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
application/octet-stream : flux de données arbitraire
application/ogg : Ogg
application/pdf : PDF
application/xhtml+xml : XHTML
application/x-shockwave-flash : Flash
audio/mpeg : fichier MP3 ou MPEG
audio/x-ms-wma : fichier Windows Media Audio
audio/vnd.rn-realaudio : fichier RealAudio
audio/x-wav : fichier WAV
image/gif : image GIF
image/jpeg : image JPEG
image/png : image PNG
image/tiff : image TIFF
text/css : Feuille de style
text/html : fichier HTML
text/plain : Données textuelles
text/xml : fichier XML
video/mpeg : vidéo MPEG-1
video/mp4 : vidéo MP4
video/quicktime : vidéo QuickTime
video/x-flv : Vidéo Flash
..
Bertrand Estellon (AMU)
PHP – Master CCI
.
..
.
..
.
. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. .. ..
January 30, 2014
.
..
.
..
.
..
.
..
108 / 177
.