HTTP-Header senden


PHP ermöglicht mit der funktion header() den Browsercache zu deaktivieren, Weiterleitungen und Downloads auch von Bildern oder Texten.

Sofortige Weiterleitung
PHP-Datei:
1
2
3
<?php
header
("location: seite.php");
?>

Nach location: folgt die Adresse.


Weiterleitung nach bestimmter Zeit
Es geht natürlich auch, dass die Weiterleitung erst nach ein paar Sekunden erfolgt.
PHP-Datei:
1
2
3
<?php
header
("refresh:3;url=seite.php");
?>

In diesem Beispiel kommt man nach 3 Sekunden auf die Seite seite.php.
Im Gegensatz zur HTML-Entsprechung
Code:
<meta http-equiv="refresh" content="3; URL=seite.php">
ist der Code nicht im HTML-Quelltext sichtbar. So kann man zum Beispiel die Besucher seiner Seite auffordern, erst auf ein paar Banner zu klicken, bis diese dann nach 20 Sekunden auf die gewünschte Seite gelangen. Die Weiterleitungen funktionieren nicht, wenn der Besucher automatische Weiterleitungen im Browser deaktiviert hat!


Cache deaktivieren
Durch diese Zeilen lässt sich verhindern, dass die Datei gecacht wird.
PHP-Datei:
1
2
3
4
5
<?php
header
("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");
?>



Content-Type definieren
Standardmäßig sendet der Server für PHP-Dateien den Content-Typ text/php oder text/html.
Dies kann man natürlich auch ändern:
PHP-Datei:
1
2
3
<?php
header
("Content-Type: typ/typ");
?>

Bei Bildern, die man mittels PHP erstellt, sollte man je nach Typ image/jpeg, image/png oder image/gif nehmen, bei online generierten PDFs application/pdf.


Jeden Dateityp zu Download anbieten
Manche Browser sind sehr eigenwillig. Der M$ IE spielt beim Linksklick auf Musik- und Filmdateien diese in einem kleinen Fenster ab, anstatt sie herunterzuladen.
Man kann mit ein paar Zeilen aber auch diesen Browser zwingen, alles herunterzuladen.
download.php:
1
2
3
4
5
6
7
8
<?php
$orig_file 
"datei.ext";
$save_file "blabla.exe";
header("Content-Type: x-type/octtype");
header("Content-Length: ".filesize($orig_file));
header("Content-Disposition: attachment; filename=".$save_file);
readfile($orig_file);
?>

In den ersten beiden Zeilen werden die Datei ($orig_file) und der Dateiname, unter dem die Datei gespeichert werden soll ($save_file), definiert.
In der dritten Zeile wird wieder der Content-Type bestimmt.
Mit Content-Length: wird die Dateigröße in Bytes gesendet und in der letzten Zeile wird der Dateiname bestimmt. Content-Disposition: attachment; bringt jeden Browser dazu, die Datei herunterzuladen.
Auf diese Weise kann man Texte, Bilder, im Prinzip alles zum Download anbieten. Erlaubt der Webspace z.B. keine Dateiendungen wie zip, ist die Methode, Downloads anzubieten, sehr praktisch.


Bei mir kommt eine Fehlermeldung wie:
Fehlermeldung:
Warning: Cannot add header information -
headers already sent by (output started at bla.php:3) in bla.php on line 13

Beachte, dass vor den header()-Funktionen kein HTML-Code stehen darf. Werden andere Dateien includiert, sollte die include() nach den header-Funktionen stehen. Am sichersten geht man, wenn man die header-Funktion zuallererst im PHP-Code schreibt.Geschrieben von dasepp am 12.08.2004 (11841x gelesen)
Diese News stammt von der Seite http://www.yubb.de
Sie ist unter http://www.yubb.de/artikel487.html direkt aufrufbar.

Jegliche Reproduktion dieser Seite oder ihrer Inhalte ist strengstens untersagt.