AMVA48-49 HTML ja PHP-ohjelmointi, 2 ov
Yleistä
kurssista
HTML-
perusteita
PHP-kielen
perusrakenteet
HTML-lomakkeen
käsittely
Tiedoston
käsittely
Evästeiden
käyttö
Istunnon
hallinta
Oppimis-
tehtävät
EVÄSTEET
  1. Mikä on eväste?
  2. Evästeen asettaminen
  3. Evästeen poistaminen

1 Mikä on eväste?

HTTP-protokollassa ei ole mekanismia, jolla voitaisiin ylläpitää tilatietoja HTTP-pyyntöjen ja vastausten välissä. Tilatietoja tarvittaisiin esimerkiksi silloin, kun istunnon alussa kirjaudutaan palvelun käyttäjäksi ja käyttäjätiedot ovat voimassa palvelun käytön ajan siirryttäessä sivulta toiselle. Evästeet ovat vanhin, Netscapen ehdottama, tapa tilatietojen ylläpitämiseen.

Eväste eli cookie on merkkijono, jonka palvelin lähettää selaimelle Set-Cookie-nimisenä HTTP-otsakkeena tallennettavaksi selaimen muistiin koneen levylle.

Eväste voi koostua seuraavista osista:

Jos selain hyväksyy evästeen, se lähettää siihen liittyvän nimen ja sitä vastaavan arvon HTTP-otsakkeena palvelimelle seuraavissa hakupyynnöissä, jos verkkoalue ja hakupolku täsmää tulevaan hakupyyntöön, voimassaoloaika ei ole mennyt umpeen.

Evästeet tallentuvat palvelimella globaaliin $_COOKIE-taulukkoon.

Evästeisiin liittyvä huono puoli on se, että käyttäjä voi estää evästeiden hyväksymisen selaimessaan, jolloin evästeisiin perustuva palvelu ei toimi.

2 Evästeen asettaminen

Koska evästeet kulkevat HTTP-otsakkeissa, on evästeet asetettava setcookie()-funktiolla ennen ennen kuin sivulle voidaan tulostaa mitään edes HTML-moodissa.

Esimerkki, osa 1: Tehdään yksinkertainen sivu, joka laskee evästeen avulla kuinka monta kertaa olet vieraillut sivulla evästeen voimassaoloaikana.

<?php 

$laskuri=$_COOKIE['laskuri'];
$laskuri++;

setcookie("laskuri","$laskuri",time()+172800);
echo "Olet ladannut tämän sivun " .$laskuri.  " kertaa";
?>

Selitys koodille:

3 Evästeen poistaminen

Eväste voidaan poistaa asettamalla sen arvoksi tyhjä merkkijono. Tämä saadaan aikaan kutsumalla setcookie()-funktiota pelkästään nimi-parametrillä. Edellisen esimerkin tapauksessa eväste poistetaan funktiolla setcookie().

  setcookie("laskuri");

Esimerkki, osa 2: Toteutetaan edelliseen esimerkkiin toiminto, joka nollaa laskurin poistamalla evästeen.

ikkuna
<?php 
if(isset($_POST['nollaa']))
{
   setcookie("laskuri");
   echo "Eväste poistettu!";
}
else
{
   $laskuri=$_COOKIE['laskuri'];
	 $laskuri++;
   setcookie("laskuri","$laskuri",time()+86400);
   echo "Olet ladannut tämän sivun $laskuri kertaa";
}

?>
<html>
<head>
<title>Evästelaskuri</title>
</head>
<body>
<form method="post" action="<?php echo $PHP_SELF;?>">
<input type="submit" value="Lataa uudelleen" name="reload">
<input type="submit" value="Nollaa laskuri" name="nollaa">
</form>
</body>
</html>