Kirjautuminen

Haku

Tehtävät

Hakemisto: PHP: HTTP: header

int header ( string kentta [haka], bool korvaataanko = TRUE [haka], int http_reponse_code[/haka][/haka])

Header-metodia käytetään HTTP-headerien lähettämiseen. HTTP/1.1 protokollamäärityksistä löytyy lisätietoja headereista.

Valinnainen korvataanko-parametri kertoo, korvataanko edellinen samalla otsikolla lähetetty header-rivi vai lisätäänkö uusi rivi sen perään. Oletuksena se korvataan, mutta voit estää sen laittamalla parametriksi FALSE.

Toinen valinnainen parametri http_response_code pakottaa vastauskoodiksi tietyn kokonaisluvun. (käytössä PHP 4.3.0 ja uudemmissa) Toimintoa tarvitaan, jos lähetetty header-sisältää jonkun virhekoodin (esimerkiksi 404 Not Found) ja se halutaan muuttaa (ei yleensä tarpeellista). Toinen, yleisemmin tarvittu tapaus on se, että halutaan ilmoittaa jonkun sivun siirtyneen pysyvästi. Se voidaan suorittaa esimerkiksi seuraavasti:

<?php
header("Location: http://www.esim.fi/", true, 301); // ohjaa selaimen
exit; // varmistaa, ettei headerien jälkeen lähetetä tavaraa (ei välttämätön, mutta suositeltava)
?>

Edellinen komento lähettää headerit

301 Moved
Location: http://www.esim.fi/

kun komento ilman lisäparametria lähettäisi

302 Moved temporarily
Location: http://www.esim.fi/

Yleinen käyttötarkoitus headereilla (edelleenohjauksen lisäksi) on estää sivun lisääminen välimuistiin. Seuraava esimerkki toimii lähes kaikilla selaimilla.

<?php
header("Expires: Mon, 25 Jan 1995 02:00:00 GMT");    		// vanhentumispäivämäärä menneisyydestä (aina vanhentunut)
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");	// muokattu nyt (vaatii palvelimen kellon olevan oikeassa ajassa)
header("Cache-Control: no-store, no-cache, must-revalidate");	// HTTP/1.1, ei säilytetä välimuistissa
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                          		// HTTP/1.0, ei säilytetä välimuistissa
?>

Headereita tarvitaan myös jonkin muun kuin HTML-tiedoston lähettämisessä. Esimerkiksi HTML-lähdekoodin voi lähettää seuraavalla tavalla (hypoteettinen esimerkki, koska siihen kannattaa käyttää komentoa show_source) :

<?php
header ("Content-type: text/plain");
include("sivu_jonka_lahdekoodi_halutaan_nayttaa");
?>

Toimivampi/käyttökelpoisempi esimerkki edelliseen.

<?php
// valitse tiedostotyypiksi pdf
header("Content-type: application/pdf");

// tiedoston nimi tiedosto.pdf / eikä skriptinnimi.php !
header("Content-Disposition: attachment; filename=tiedosto.pdf");

// luetaan tiedosto palvelimelta
readfile('asiakirja.pdf');
?>
Tietoa sivustosta