Header kan in PHP gebruikt worden om HTTP headers te versturen.
Syntax
void header ( string $string [, bool $replace [, int $http_response_code ]] )
$string: Dit is de header die je wilt versturen.
$replace: Dit geeft je de mogelijkheid om meer van dezelfde headers te versturen. Default staat het op replace. Dit wil dus zeggen als je de volgende code zou gebruiken dat alleen de 2de header verwerkt wordt.
0 1 2 | header('WWW-Authenticate: Negotiate'); header('WWW-Authenticate: NTLM'); |
Maar als je nu het volgende zou doen dan worden bijde headers verwerkt.
0 1 2 | header('WWW-Authenticate: Negotiate'); header('WWW-Authenticate: NTLM', false); |
Handig om weten
Het is belangrijk om weten dat de header functie aangeroepen moet worden voor er ouput naar het scherm gestuurd wordt.
Iets als het onderstaand kan dus niet:
0 1 2 | echo "hello world"; header(......); |
Wat wel kan is hetvolgende:
0 1 2 | header(......); echo "hello world"; |
Veel beginnende programmeurs maken vaak de fout dat ze een spatie of een return voor het php openings tag hebben staan. Als je dan gebruik gaat maken van de header functie dan krijg een foutmelding als deze:
Warning: Cannot modify header information - headers already sent by (output started at index.php:24) in test.php on line 112
Voorbeelden
Een gebruiker doorsturen naar een andere pagina:
0 | header( "Location: http://www.test.be/verwijzing/" ); |
XML naar het scherm schrijven:
0 1 | header ("content-type: text/xml"); echo file_get_contents( "http://localhost/test.xml" ); |
Dit wordt vaak gebruikt voor dynamisch RSS feeds aan te maken.
Een bestand downloaden van de server:
0 1 2 3 4 | header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="downloaded.pdf"'); readfile('naamvanpdf.pdf'); |