php.jpgJohdatus PHP-kieleen

Sisällysluettelo

JohdantoSyntaksiTietotyypitMuuttujatOperaattoritKontrollirakenteetTaulukotFunktiotLomakkeetTietokantaEvästeetSessiot

www.php.net

Sessiot

Yleistä sessioista ylös

Session hallinta on tekniikka, jonka avulla on tarkoitus säilyttää turvallisesti tietoa yhden session ajan eli siihen asti, kunnes käyttäjä lopettaa session tai sulkee selaimen. Keskeisin ero evästeisiin on se, että sessiotietoa ei välitetä lainkaan selaimelle, vaan se säilytetään palvelimella. Palvelin säilyttää asetuksista riippuen sessiotiedon joko tiedostossa tai muistissa.

Silloin, kun sessio käynnistetään, sillä luodaan yksilöllinen sessiotunniste. Sessioon voidaan sen jälkeen asettaa haluttu määrä ns. sessiomuuttujia. Sessiotietoon päästään möyhemmin käsiksi sessiotunnisteteiden avulla. Tämän vuoksi sessiotunniste on jollain tavalla välitettävä aina selaimelle.

Sessiotunnisteen välittämiseen on PHP:ssä kaksi tapaa: välittää sitä URL:n mukana tai säilyttää evästeessä. PHP tekee tämän välittämisen automaattisesti, joten koodissa siitä ei tarvitse ottaa huomioon. Sen sijaan PHP:n asetuksia määritellessä tämä kannattaa ottaa huomioon. Sessiotunnisteen välittämiseen URL:n mukana sisältyy sellainen tietoturvariski, että sen tallentamista evästeeseen kannattaa yleensä suosia. Lisätietoa näistä sessioihin vaikuttavista PHP:n asetuksista saat tästä (linkki johtaa www.php.net sivustolle).

Sessiomuuttujien käyttö ylös

Sessiotietoon viitataan PHP:ssä $_SESSION-muuttujan avulla. Siihen viitataan ns. sessiomuuttujan nimen avulla. Uuden sessiomuuttujan asettaminen tapahtuu esim.

$_SESSION['nimi'] = "jotain";

Sessiomuuttujaan voidaan viitata heti sen asettamisen jälkeen. Tämä on ero evästeisiin, jotka ovat käytettävissä vasta seuraavalla kerralla, kun sivu ladataan. Sessiomuuttujista on kuitenkin huomattava, että ennen niiden käyttöä on kutsutta joaisella sivulla session_start()-funtkiota (ks. seuraava kappale).

Session käynnistäminen ylös

Aina sessioita käytettäessä PHP:ssä täytyy jokaisella sivulla kutsua ensin session_start()-funktiota. Se tutkii ensin löytääkö se jo käynnissä olevan session tunnisteen evästeestä, URL:sta tai vastaanotetuista lomaketiedoista. Jos se löytää käynnissä olevan session, alustaa se automaattisesti $_SESSION-taulukkoon käytössä olevat sessiomuuttujat.

Session tuhoaminen ylös

Sessio on tietoturvasyistä aina muistettava tuhota, jos vain mahdollista. Muussa tapauksessa sessiotieto jää pysyvästi palvelimelle ja on meahdollista, että se joutuu vääriin käsiin. Palveluun, jossa käytetään sessioita on siis tehtävä lopeta-toiminto ja neuvottava käyttäjiä aina lopettamaan käyttö sen kautta, ei sulkemalla selainta.

PHP:ssä sessio saadaan tuhottua session_unset()-funktiolla, joka tuhoaa aina kutsuttaessa kaikki sessiomuuttujat. Sillä ei ole parametreja. Yksittäisen sessiomuuttujan voi tuhota unset()-funktiolla, esim.

unset($_SESSION['nimi']);