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.