Was ist Header? Oder was macht Header?

sharmuur

Mitglied
Hallo,

ich hätte mal wieder eine Frage.
Ich benutze für mein php-Script die Header-Funktionen um die Daten von einer Mysql-DB als Datei auszugeben.
Da ich am Anfang über die Dateiausgabe keine Ahnung hatte, habe ich einfach gegoogelt, wie man es macht und glücklicherweise
habe ich die unten stehenden Header-Funktionen gefunden und einfach ausprobiert. Es funktioniert super, aber ich habe wievor keine Ahnung,
was Header eigentlich ist und was die ganzen Parametern innerhalb der Klammern machen. Ich habe in verschiedenen Tutorials und auch in php.net
die Artikeln über Header gelesen, leider konnte ich nicht begreifen. Kann jemand mir bitte eine Webseite empfehlen, wo über Header verständlich erklärt ist
oder kann jemand mir sagen was bei den vorliegenden Funktionen gemacht werden.

danke voraus

PHP:
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=db.csv");
header("Pragma: no-cache");
header("Expires: 0");
 
Hallo!

Mit header() werden Daten an die Client gesendet, welche er als erstes bekommen soll.
Es können weitere Daten (z.B. HTML-Quelltext) folgen, ist aber nicht grundsätzlich notwendig.
Es kann aber auch passieren dass andere Daten ebenfalls als erstes an den Client geschickt werden müssen, ein typisches Beispiel wäre unter anderem session_start().
Damit header() und session_start() "gleichzeitig" an den Client gesendet werden können, muss PHP den Ausgabepuffer verwenden (siehe Output-Control-Funktionen).
Versuchst Du header() und session_start() ohne Ausgabepuffer an den Client zu senden, spuckt PHP eine Warnnung aus (headers already sent).
Selbiges passiert auch wenn andere Daten vorher gesendet werden (z.B. eine Leerzeile oder HTML-Quelltext).
Siehe auch php-fehlermeldungen.de.

Nun zu Deinem Code:
Mit "Content-Type" (ein anderer Begriff wäre MIME-Type) wird dem Client mitgeteilt welcher Dateityp (nicht zu verwechseln mit der Dateiendung) gesendet werden soll.
Einen kleinen (aber wohl nicht vollständigen) Überblick über einige MIME-Typen findest Du z.B. hier bei Selfhtml.
Mit "Content-Disposition" wird dem Client mitgeteilt ob es sich um einen Anhang (attachment) handelt und dieser als Download angeboten werden soll, oder ob die Datei im Client (sofern möglich) angezeigt werden soll (inline).
Die 2. Angabe (filename) teilt dem Client den Dateinamen mit, unter welchem die Datei angehängt bzw. angezeigt werden soll.
Mit "Pragma" wird angegeben ob bzw. wie die Datei im Proxy zwischengespeichert werden soll.
"no-cache" bedeutet dabei dass die Datei nicht im Proxy zwischengepeichert werden soll (sinnvoll bei Dateien die sich immer wieder ändern).
Mit "Expires" wird dem Client mitgeteilt wie lange dieser die Datei zwischenspeichern soll (z.B. im Browser-Cache).
Die "0" bedeutet hierbei die Zeit in Sekunden, die Datei wird also nicht vom Client zwischengespeichert (auch hier wieder --> sinnvoll bei Dateien die sich immer wieder ändern).

Weitere Links:
http://de.selfhtml.org/html/kopfdaten/meta.htm
http://www.ietf.org/rfc/rfc2183.txt

Gruss Dr Dau
 
Zurück