Istuntojen hallinta PHP-sovelluksessa Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Istunto? Aloitus Lopetus Sivu 1 Sivu 2 Sivu 3 Sivu n aika Istunto
Istunto? Käytetään yleisesti englanninkielistä nimitystä Session Yhteenkuuluvat web-sivut, jotka muodostavat sovelluksen/sivuston POST tai GET-metodilla voidaan siirtää tietoa kahden sivun välillä Mikäli tiedon täytyy olla käytettävissä tämän jälkeenkin, tarvitaan istuntomuuttujia
Istunto? Käytetään esim. Verkkokaupan ostoskorin toteuttamiseen Tallentamaan tieto siitä, onko käyttäjä kirjautunut sivustolle (verkkopankki) …
HTTP-protokollan toiminta HTTP-vastaus HTTP-pyyntö Selain Web-palvelin
Protokolla Yhteyskäytäntö tiekoneiden välillä Kommunikointiin tarvitaan sääntöjä, jotta viestejä voidaan käsitellä ohjelmallisesti Protokolla kuvaa viestin rakenteen ja mahdollisen sisällön HTTP-protokolla kuvaa siis säännöt ja viestien rakenteen web-selaimen ja –palvelimen väliseen kommunikointiin
Selaimen lähettämä HTTP-pyyntö Rakenne Pyyntörivi HTTP-otsakkeet Data Esimerkki Get /jokusivu.htm HTTP/1.0 User-Agent. Mozilla/3.01Gold (Wind95; I) Accept: image/gif, image/jpeg jne. Accept-Language: fi
Palvelimen lähettämä vastaus Rakenne Tilarivi HTTP-otsakkeet Data Esimerkki HTTP/1.0 200 OK Date: Sat, 22 Sep 2001 08:02:16 GMT Server: Apache/1.3.20 (Unix) PHP/4.0.6 Content-Type: text/html <html> <body> …
HTTP-protokollan toiminta Yhteys muodostetaan vain pyynnön ja vastauksen ajaksi Yhdensuuntainen (selain aina kutsuu, palvelin vastaa) HTTP-kutsujen välillä palvelin ei tunnista kutsujaa (selainta) HTTP-protokolla on Yhteydetön (connectionless) Tilaton (stateless)
Istuntomuuttujien toiminta Selain Web-palvelin HTTP-vastaus istuntotunniste HTTP-pyyntö istuntotunniste Istuntotunniste tallentuu joko evästeeksi tai sitä kuljetetaan HTTP-kutsussa Asiakkaan istuntoon liittyvät tiedot tallentuvat tiedostoksi levylle, tietokantaan tai niitä pidetään palvelimen keskusmuistissa
Istunto HTTP-kutsuissa tulevat tiedot voidaan tallentaa palvelimelle Useat (erilliset) HTTP-kutsut voivat täten muodostaa palvelun, jossa käyttäjän tekemiä toimenpiteitä voidaan seurata Istunto on voimassa kunnes se tuhotaan (php-koodilla), käyttäjä sulkee selaimen tai palvelin aikakatkaisee istunnon, jos käyttäjän selain jää auki eikä toimintaa ole
Istuntomuuttujien käsittely PHP:ssä session_start() $_SESSION[’x’] session_destroy unset …
session_start() session_start() kutsu jokaisen sellaisen sivun alussa, jossa käsitellään istuntomuuttujia (ei siis vain 1. sivun alussa) Kirjoitetaan yleensä aina ensimmäiseksi riviksi php-dokumenttiin aina ennen sellaisia lauseita, jotka tulostavat jotain selaimeen
Istuntomuuttujat PHP:ssä käytetään $_SESSION-superglobaalia $_SESSION-lauseen avulla joko kirjoitetaan tai luetaan arvo ns. istuntomuuttujaan
$_SESSION Tiedon kirjoittaminen Tiedon lukeminen $_SESSION[’joku]=$tietoa; Tiedon lukeminen $tietoa=$_SESSION[’joku’];
session_destroy Tuhoaa istunnon ja istuntoon liittyvät muuttujat Käytetään esimerkiksi silloin, kun käyttäjä kirjautuu ulos sovelluksesta/tilaa ostoskorin tavarat yms. Jos sovelluksessa on sisään kirjautuminen, täytyy siinä olla myös toiminnallisuus uloskirjautumiseen
unset Unset tuhoaa yhden istuntomuuttujan sisällön Unset($_SESSION[’joku’]); Istuntomuuttuja voidaan asettaa myös arvoon null $_SESSION[’joku’]=null;
Isset ja istunnot Isset()-funktiolla voidaan tarkastaa, onko jokin istuntomuuttuja olemassa if (isset($_SESSION[’kirjautunut’])) { print ”Olet kirjautunut palveluun”; } else header(”Location: login.htm”);