Header()

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Funktion

Header funktionen indenfor PHP har en simpel funktion. Den tilføjer ekstra headers til din HTTP request. En af disse kan for eksempel være en fejlkode. Lad os tage den mest kendte: 404 File not Found. Når vi får 404 fejlen stoler vi oftest på at det er fordi filen ikke findes, men somme tider er siderne bare skjult bag en falsk fejlkode. Det kan gøres med følgende funktion:

header("HTTP/1.1 404 File Not Found");

Så får browseren at vide af serveren at siden ikke eksisterer og du bliver sandsynligvis sendt videre til serverens eller browserens fejlside.

Header-funktionen har også 2 andre formål.
Det første er at videredirigere. I forbindelse med Kommunikation/IT undervisningen har mange fået at vide at det er en god idé at sammenknytte den interne og offentlige side der ligger på skolens server for at gøre det nemmere at vedligeholde. Der findes to HTTP headers til dette: 301 og 302 - bedre kendt som "Page Moved Temporarily" og "Page Moved Permanently". Det er vigtigt at man vælger den rigtige, da nogle browsere husker på 302 (Page moved permanently) og vil derfor slet ikke forsøge at hente den side du går ind på, men vil med det samme indlæse den side der henvises til. Hvis du lukker din side ned midlertidigt er det eksempelvis bedst at bruge 301. Da der skal henvises skal du også have en location header. Forskellige headers kan sepereres med enten et semikolon (;) eller en ny header funktion. Her er et eksempel:

//Brug af semikolon
header("HTTP/1.1 301 Page Moved Temporarily;Location: http://www.eksempel.dk");
//Brug af 2 header funktioner
header("HTTP/1.1 301 Page Moved Temporarily");
header("Location: http://www.eksempel.dk");

Resultatet er det samme, bortset fra den mikroskopiske smule ekstra arbejde der skal til fra serverens side til at køre funktionen 2 gange.
Hvis du flytter siden permanent ligesom vi bør gøre med den interne side (Så den henviser til den eksterne/offentlige) bør du bruge 302, altså den permanente header.
Det er en simpel forskel og ser blot sådan her ud i stedet:

header("HTTP/1.1 302 Page Moved Permanently;Location: http://www.eksempel.dk");


En sidste vigtig funktion den har er at fortælle om datatypen på et bestemt link. Dette kan være en fordel at bruge når man laver dynamiske billeder vha. PHP.
Selve headerens navn er Type og er baseret på MIME-typerne:

header("Content-Type: image/png");

Denne header fortæller browseren at siden er en PNG fil og skal behandles som en. De fleste browsere vil altså vise den som billede i stedet for en hvid side eventuelt med lidt tekst på. Nogle browsere vil i stedet vælge at lade dig downloade billedet og det kan i nogle få tilfælde være en god ting.

Bemærk

En ulæmpe ved headers er at de er det første der skal modtages af browseren, derfor skal dette foregå aller først i dokumentet. Det vil sige FØR DOCTYPE definitionen. Hvis dette ikke bliver gjort, vil brugeren få en fejl og headeren bliver ikke modtaget af browseren.