php.jpgJohdatus PHP-kieleen

Sisällysluettelo

JohdantoSyntaksiTietotyypitMuuttujatOperaattoritKontrollirakenteetTaulukotFunktiotLomakkeetTietokantaEvästeetSessiot

www.php.net

Evästeet

Yleistä evästeistä ylös

Evästeet ovat tekstimuotoista tietoa, jota palvelin voi lähettää selaimelle. Evästeelle voidaan määrätä haluttu elinikä, jonka ajan selain säilyttää evästeeseen talletettua tietoa. Oletuselinikä evästeillä on meneillään oleva sessio, joka tarkoittaa, että tietoa talletetaan vain siihen asti, kun selain suljetaan. Tyypillisesti selain säilyttää tällaisia session mittaisia evästeitä muistissa. Jos evästeen elinikä on määritelty pidemmäksi, tallentaa selain sen tiedostoon.

Seuraavan kerran, kun selain pyytää sivua se lähettää evästeen palvelimelle. Palvelimella toimiva www-sovellus voi hyödyntää edellisellä kerralla talletettua tietoa. Evästettä voidaan ajatella siis eräänlaisena muuttujana, johon voidaan tallentaa tekstiä. Tieto on siten aina käytettävissä seuraavilla kerroilla, kun sivustoa käytetään.

Evästeessä voidaan säilyttää esimerkiksi ostoskorin tiedot verkkokaupassa, jolloin käyttäjä voi jättää ostoksensa kesken ja jatkaa niitä sujuvasti seuraavalla kerralla. Mitään arkaluontoista tietoa evästeissä ei kuitenkaan saa säilyttää, sillä ne ovat puhdasta kenen tahansa luettavissa olevaa tekstitetoa. Myöskään mitään tärkeää säilytettävää tietoa ei kannata tallettaa evästeissä, sillä ne ovat helposti poistettavissa.

Selaimella on aina jokin raja siitä, kuinka suuria evästeet saavat olla ja kuinka paljon niitä voidaan tallettaa. Jokaisen selaimen pitäisi kuitenkin minimissään täyttää suosituksen minimirajat:

Evästeen asettaminen yleisesti ylös

Palvelin lähettää evästeen http-vastauksen otsikkotiedoissa. Otsikkotiedoissa lähetetään selaimelle rivi, joka on seuraavaa muotoa:

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure

NAME tarkoittaa evästeen nimeä ja VALUE arvoa (merkkijono), joka evästeelle annetaan. Nimi on ainoa pakollinen tieto, joka evästeelle täytyy joka tapauksessa määrittää. Muut tiedot voidaan haluttaessa jättää tyhjäksi.

expires määritys määrittää ajan, mihin asti eväste on voimassa eli mihin asti selainta pyydetään sitä säilyttämään. Aika (DATE) ilmoitetaan muodossa: "05-May-2004 07:31:27 GMT". Jos aikaa ei määritellä, on eväste oletuksena voimassa vain session ajan.

path määritys määrittelee palvelimen polun, jossa eväste on voimassa. Oletuksena eväste on voimassa samassa kansiossa ja sen kansion alikansioissa. Tämä tarkoittaa sitä, että jokaisella kerralla, kun selain pyytää jotain sivua evästeen voimassaoloalueelta, se lähettää evästeen palvelimelle http-pyynnön mukana. Jos poluksi määritellään vain "/", on se voimassa koko domainissa.

domain määrityksellä voidaan määritellä evästeen vaikutusalueeksi kaikki palvelimen alidomainit. Jos arvoksi määritellään esim. ".jyu.fi", on eväste voimassa kaikissa Jyväskylän yliopiston alidomaineissa.

secure määrityksellä voidaan määrätä, että selain lähettää evästeen palvelimelle ainoastaan silloin, kun on käytössä salattu yhteys (HTTPS/SSL). Tämä ilmaistaan siis lisäämällä sana "secure" evästeen määreisiin.

Evästeen asettaminen PHP:ssä ylös

PHP-koodissa evästeen asettaminen toteutetaan setcookie()-funktiolla. Funktiosta on muistettava, että sitä täytyy kutsua ennen XHTML-koodin alkamista PHP-sivulla. Siis käytännössä kutsu täytyy olla ennen XML-vesriomäärityksen tulostamista, joka on aina oltava XHTML-dokumentin ensimmäinen rivi. Alla on esimerkki setcookie()-funktion kutsusta.

setcookie("nimi", "tekstiä arvoksi", time()+60*60*24*30, "/", ".it.jyu.fi", 1);

Esimerkissä on käytetty kaikkia setcookie()-funktion parametreja. Kuitenkin ainoastaan ensimmäinen parametri eli evästeen nimi on pakollinen. Toisena parametrina voidaan antaa evästeen arvo merkkijonona.

Kolmas parametri on evästeen voimassaoloaika, joka annetaan "Unix timestamp"-muodossa. "Unix timestamp" on sekunteina ilmoitettuna aika, joka on kulunut vuoden 1970 alusta. PHP:ssä on esimerkissä käytetty time()-funktio, joka palauttaa tämän hetkisen ajan tuossa muodossa. Esimerkissä on lisätty siihen 30 päivää vastaava määrä sekunteja, jolloin eväste vanhenee 30 päivän kuluttua. PHP muuntaa tuon ajan automaattisesti evästeen vaatimaan muotoon.

Neljäs mahdollinen parametri setcookie()funktiolle on evästeen yleisen asetttamisen yhteydessä käsitelty "path"-asetus. Viides parametri on samassa yhteydessä käsitelty "domain"-asetus. Kuudes ja viimeinen parametri on "secure"-asetus. Sen arvoksi voidaan antaa joko 0 tai 1. Esimerkissä on asetettu sen arvoksi 1, joka tarkoittaa sitä, että selain lähettää evästeen ainoastaan salatun yhteyden yli.

Evästeen käyttö PHP:ssä ylös

Evästeeseen viitataan PHP:ssä $_COOKIE-muuttujan avulla. Se on taulukkomuotoinen muuttuja, joka muodostuu automaattisesti selaimen lähettämistä evästeistä. Taulukon soluihin viitataan evästeen nimen perusteella. Alla on tästä esimerkki:

if(isset($_COOKIE['nimi']))
  echo "Löytyi eväste 'nimi': ".$_COOKIE['nimi'];