Tredun ohjelmistokehittäjien kurssimateriaaleja
Evästeet ovat istunnon ohella yksi tapa, millä henkilökohtaista dataa saa tallennettua verkkosivulta, jos ei käytetä tietokantoja. Evästeet ovat pieniä tiedostoja, jotka verkkosivusto tallentaa käyttäjän selaimeen. Niitä käytetään esimerkiksi muistamaan kirjautumistila, kielivalinta tai ostoskorin sisältö seuraavilla vierailuilla. Evästeet voivat säilyä selaimen sulkemisen jälkeen ja olla käytettävissä myöhemmin (pysyvät evästeet) tai hävitä automaattisesti, kun selain suljetaan (väliaikaiset evästeet). Käyttäjän selain lähettää evästeet automaattisesti palvelimelle jokaisessa pyynnössä.
Käy ensimmäisenä lukemassa linkitetty artikkeli What are cookies?
Harjoitellaan, miten käytetään yksinkertaista evästettä.
<form method="post">
<label for="cookie">Give the cookie some information</label><br />
<input type="text" name="cookie" value="" /><br />
<input type="submit" value="Save cookie" /><br />
</form>
<form method="post">
<input type="submit" name="remove" value="Remove cookie" />
</form>
Tämän jälkeen meidän täytyy lisätä koodi, joka käsittelee lomakkeet:
<?php
// lomakkeen käsittely
if (isset($_POST["cookie"])) {
// yritetään tallentaa
setcookie("our_cookie",$_POST["cookie"], time() +1800);
}
// jos lähetetään tyhjennä:
if (isset($_POST["remove"])) {
setcookie("our_cookie","", time() -1800);
}
?>
Esimerkissä time() +1800 merkitsee sitä, kuinka pitkään eväste on voimassa sekunteina sen asettamishetkestä (tässä tapauksessa se on puoli tuntia, sillä 1800 sekuntia on puoli tuntia). Kun eväste poistetaan, sen kestokin poistetaan.
<?php
// lomakkeenkäsittely
// apumuuttuja - ollaanko kirjauduttu
$ok = false; // oletuksena ei kirjauduttu
// -- TÄHÄN LOMAKKEENKÄSITTELIJÄ --
// 1. jos ei olla kirjauduttu
if ($ok == false) {
?>
<form method="post">
<label for="password">Syötä salasana</label><br />
<input type="password" name="password" /><br />
<input type="submit" value="Kirjaudu" />
</form>
<?php
}
else {
// 2. jos ollaan kirjauduttu niin
?>
<form method="post">
<input type="submit" name="logoff" value="Kirjaudu ulos" />
</form>
<?php
}
?>
if (isset($_COOKIE["ok"])) {
$ok = $_COOKIE["ok"];
}
else if (isset($_POST["password"])) {
if ($_POST["password"] == "salasana") {
// käyttäjä antoi oikean salasanan
setcookie("ok", true, time() +1800);
echo "Tunnus oikein!";
$ok = true;
}
else {
// käyttäjä antoi väärän salasanan
echo "Tunnus väärin :( ";
}
}
Sitten uloskirjautuminen.
// jos painettiin logoff-submit:
if (isset($_POST["logoff"])) {
setcookie("ok","", time() -1800);
$ok = false;
}