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 .