Sessiot

Tällä luennolla käsitellään PHP:n sessioita.

Luentotaltiointi

Ongelmia videon katselussa?

Mikä on sessio (istunto)?

Sessio on aika jonka käyttäjä viettää tietyn www-palvelun parissa.

Esim. selaa webbikaupan sivuja, lisää ostoksia ostoskoriinsa ja tekee tilauksen.

Tiettyyn rajaan asti tietoja voi kuljettaa mukana lomakkeelle asetettuina piilokenttinä.

Evästeet PHP:ssa

cookie.php (lähdekoodi)

Session vaatimia tietoja ei voida tallentaa suoraan evästeisiin:

Miten sessiohallinta toteutetaan?

Sessiot PHP:ssa

Sessio PHP:ssa

Sessioiden oletusarvot

.htaccess-tiedostossa voi seuraavilla riveillä määrätä sessioihin liittyviä asetuksia:


# käynnistetään sessio automaattisesti ilman session_start()-funktiota
# Näin käytettynä ei voida tallentaa sessioon olioita!
php_value session.auto_start 1
# käytetäänkö cookieita vai ei
php_value session.use_cookies 1
# minne sessiot tallennetaan
# Ei tarvi normaalisti määritellä
php_value session.save_path '/home3/368/tjlahton/public_html/php/sessiot'
# kertoo montako sekunttia sessio pidetään elossa viimeisen sivukäynnin jälkeen
php_value session.gc_maxlifetime 1800

sessio.php (sessio.phps)

Sessiot ilman evästeitä

Jos evästeitä ei ole käytettävissä täytyy session tunnistetta kuljettaa mukana sivun osoitteessa parametrina tai lomakkeelle piilotettuna muuttujana.

Sessiotunnisteen kuljettaminen url:n mukana lisää tietoturvaongelmia koska tunniste voi kulkeutua sivun osoitteen mukana vääriin käsiin.

Sessiot saa toimimaan ilman evästeitä asettamalla:

php_value session.use_trans_sid 1
php_value url_rewriter.tags "a=href,area=href,frame=src,input=src,fieldset=fakeentry"
php_value arg_separator.output  &

Nämä saavat php:n lisäämään sessiotunnisteen lomakkeille ja linkkeihin. Itse luotuihin dynaamisiin linkkeihin php ei aina osaa lisätä sessiotunnistetta joten joskus pitää sessiotunniste lisätä seuraavasti:

print '<a href="' . $dynosoite . '?param=2&' . strip_tags(SID) . '">linkki</a>';

strip_tags(SID) ei palauta mitään jos sessiot toimivat evästeillä strip_tags-funktiokutsu täytyy pitää mukana tietoturvasyistä.

nocookie.php (lähdekoodi)

Sessiot ja XHTML

PHP:n sessiohallinta käyttää joitakin käsittämättömiä oletusarvoja jotka täytyy muuttaa jos haluaa tuottaa validia XHTML:ää.


# Seuraavat huomiot koskevat vain url-pohjaista sessionhallinta.
# evästeiden kanssa näitä määrityksiä ei tarvita
# Käytetäänkö tarvittaessa url-pohjaista sessionhallintaa
php_value session.use_trans_sid 1
# mitä html-elementtejä kirjoitetaan uusiksi url-pohjaisessa sessionhallinnassa
# Tämä kohta on oletuksena php:ssa määriteltynä väärin
php_value url_rewriter.tags "a=href,area=href,frame=src,input=src,fieldset=fakeentry"
# url-parametrien erotinmerkki
# Tämä kohta on oletuksena php:ssa määriteltynä väärin
php_value arg_separator.output  &amp;

Ampersands, PHP Sessions and Valid HTML

Luentoesimerkki

ostoskori.php (lähdekoodi)

Lisätietoja

Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/sovellukset/luennot/luento11/
© Jukka Mäntylä (jmantyla@mit.jyu.fi)< http://www.iki.fi/jmantyla/>
2006-03-31 16:06:32