PHP/MySQL - Header - Erläuterung
1. Die Abschnitte
- Erläuterung
- "Cannot modify ..."
- Pufferung
- Kleine Beispiele
- Internet Media Type
- Dateien
- Downloads
- Charset
- HTTP-Header
2. Ein Hinweis
Die folgenden Erläuterungen sind als Einstieg gedacht. Daher habe ich völlig willkürlich ein paar Beispiele zusammengestellt, denn ein kompletter Überblick über alle Möglichkeiten würde jeglichen Rahmen sprengen. Auch gibt es keine saubere Trennung nach der Art der Header. Hier geht es erst mal nur um das Grundsätzliche. Vielleicht schiebe ich ja irgendwann mal ein Tutorial für Fortgeschrittene nach.
3. Der Beispielcode
... kann wie gehabt rechts unter selbigem Punkt herunter geladen werden. Dabei gibt es für fast jeden der folgenden Abschnitte einen Ordner (fast) gleichen Namens. Folgende Ordner sollten vorhanden sein.
beispiele
cannot_modify
charset
dateien
downloads
http_header
output_buffer
4. Das Grundprinzip
Obacht!
Vorab möchte ich darauf hinweisen, dass folgende Erklärungen nicht ganz den Tatsachen entsprechen. Ich mache das aber aus didaktischen Gründen, um euch den Einstieg und das grundlegende Verständnis zu erleichtern.
In (X)HTML gibt es das <meta http-equiv>
-Tag, mit dem man bestimmte Informationen zur Verfügung stellt. Die richten
sich zum Beispiel an Browser, Proxy-Server oder Suchmaschinen. So weist folgender Code den Browser an, nach 5 Sekunden auf
www.example.org
weiterzuleiten.
<meta http-equiv="refresh" content="5; URL=http://www.example.com">
Oder mit dem folgenden Code sagen wir den Proxy-Servern "Bitte, bitte, nicht zwischenspeichern". Auch wenn die sich nicht immer daran halten ;-).
<meta http-equiv="pragma" content="no-cache">
All diese Angaben werden in (X)HTML im <head>
-Bereich einer jeden Seite definiert.
5. PHP-Header
... funktionieren ähnlich. Allerdings ist die Syntax ein wenig anders. Da arbeitet man nicht mit http-equiv
, sondern mit
der Funktion header
. Obige Beispiele sehen in PHP dann so aus.
header ("Location: http://www.example.com");
header ("Pragma: no-cache");
6. Der feine Unterschied
Einfach gesagt, gibt es zwei Arten von Headern. Da hätten wir zum einen die "normalen" und dann die so genannten HTTP-Header. Der Unterschied
ist einfach zu erklären. Von Ersteren kann man mehrere senden, von Letzteren nur einen(!). So führt zum Beispiel folgender Code dazu, dass
die Weiterleitung mittels Location
nicht ausgeführt wird, da bereits vorher ein HTTP-Header gesendet wurde.
header("HTTP/1.1 304 Not Modified");
header('Location: bla.php');
7. Übersicht
Wer des Englischen mächtig ist und über ein abstraktes Denkvermögen verfügt, der möge sich nach eigenem Gusto mal die HTML-Spezifikation des W3C zum Thema Header zu Gemüte führen.