PHP header() funktion
Definition og brug
header() funktionen sender rå HTTP hoveder til klienten.
Det er vigtigt at forstå, at header() funktionen skal kaldes før nogen faktisk output er blevet sendt (i PHP 4 og højere versioner kan du bruge output caching for at løse dette problem):
<html> <?php // Resultat fejler // Der er allerede output, der er blevet sendt før kaldet header() header('Location: http://www.example.com/'); ?>
Syntaks
header(string,replace,http_response_code)
Parameter | Beskrivelse |
---|---|
string | Obligatorisk. Definerer den streng, der skal sendes som hoved. |
replace |
Valgfri. Indikerer om hovedet skal erstatte tidligere hoveder eller tilføje et andet hoved. Standard er true (erstatning). false (tillader flere af samme type hoveder). |
http_response_code | Valgfri. tvænge HTTP-svarkoden til at være den angivne værdi. (Tilgængelig i PHP 4 og nyere versioner) |
Vedvisninger og kommentarer
Kommentarer:Fra PHP 4.4 og fremefter forhindrer denne funktion at sende flere hoveder ad gangen. Dette er en beskyttelsesforanstaltning mod header-injektionsangreb.
Eksempel
Eksempel 1
<?php // Date in the past header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); ?> <html> <body> ... ...
Kommentarer:Brugeren kan indstille nogle indstillinger for at ændre browserens standard cache-indstillinger. Ved at sende ovenstående header kan du overskrive alle disse indstillinger og tvinge browseren til ikke at cachere!
Eksempel 2
Advar brugeren om at gemme den genererede PDF-fil (Content-Disposition header bruges til at tilbyde et anbefalet filnavn og tvinge browseren til at vise en gemme-dialogboks):
<?php header("Content-type:application/pdf"); // Filen vil blive kaldt downloaded.pdf header("Content-Disposition:attachment;filename='downloaded.pdf'"); // PDF kilde i original.pdf readfile("original.pdf"); ?> <html> <body> ... ...
Kommentarer:Microsoft IE 5.5 har en bug, der blokerer ovennævnte mekanisme. Opdatering til Service Pack 2 eller en højere version kan løse denne bug.