Flokkar: Allir, Almennt, Kvikmyndir, PHP, Nörd, Tón- og leiklist
Skrifað af Gaui þann 8. febrúar 2007 - 14:29
Fjöldi lestra: 1938
Athugasemdir ( ):
PHP: Session
Skrifað af Gaui þann 8. febrúar 2007 - 14:29
Fjöldi lestra: 1938Það er ágætt samband á milli cookies og sessions, þar sem þetta gegnir nánast sama hlutverki. Session eru oftast notuð til þess að geyma gögn/upplýsingar fyrir notandann í skamman tíma, t.d. á meðan hann er að vafra um á vefsvæðinu, en cookie eru kannski frekar notuð til þess að geyma gögn/upplýsingar í lengri tíma, t.d. á meðan notandinn er ekki inni á vefsvæðinu.
Eini stóri munurinn á þessum tveim fyrirbærum (cookie & session) er sá að cookies eru geymd hjá notandanum en session eru geymd á servernum. Með session þá er cookie geymd hjá notandanum sem vísar í þetta tiltekna session (PHPSESSID). Ég mæli þess vegna frekar með session í flest verkefni í staðinn fyrir cookie, þar sem session eru mun öruggari heldur en cookies.
Hvernig virkar þetta svo?
Í byrjun, áður en þú notar session þarftu ávallt að ræsa það með því að nota session_start() fallið. Svipað og með setcookie() fallið þarf session_start() fallið að vera efst í skjalinu, þ.e. á undan öllu HTML, auðum bilum, o.s.frv.
Þetta lítur sem sagt svona út:
Þarna ertu kominn með basic session initiation. En núna ætlum við út í aðeins flóknari hluti, þ.e. hvernig á að geyma session og hvernig á að ná í það aftur.
Áfram með smjörið!
Byrjum á því að búa til 4 skjöl. Eitt heitir form.php þar sem við sláum inn nafn, annað heitir vista.php þar sem við vistum nafnið inn í session, þriðja heitir skoda.php þar sem við náum í nafnið út úr sessioninu og svo að lokum heitir eitt gleyma.php þar sem við eyðum sessioninu og gleymum öllu.
Byrjum á forminu...
Þarna er form.php komið. Við þurfum ekkert að útskýra þetta nánar, þar sem þetta er bara basic HTML. Eina sem gæti kannski vafist svolítið um fyrir er þarna action="" parturinn. Þetta er bara hvert við viljum senda allar upplýsingarnar í forminu okkar. Í þetta skiptið sendum við þær á vista.php vegna þess að það skjal mun sjá um að afgreiða upplýsingarnar og vista þær í session.
Byrjum næst á vista.php skjalinu sem á að vista gögnin/upplýsingarnar okkar...
Þarna er vista.php komið. Þetta ætti að útskýra sig nokkuð vel með leiðbeiningunum sem ég setti við hverja línu. En þetta athugar bara hvort að ýtt hafi verið á submit takkann og hvort að það sé ekki örugglega eitthvað gildi í nafn POST breytunni. Ef svo er vistar hún sessionið og prentar út einhvern texta.
Næst er það skoda.php þar sem við athugum hvort að hann muni nafnið okkar...
Þarna er skoda.php komið. Þetta ætti að útskýra sig nokkuð vel með leiðbeiningunum sem ég setti við hverja línu. En þetta athugar bara hvort sessionið sé sett, og ef svo er prentar hún út: „Sæll vertu, Nafn“. En ef sessionið er ekki sett, prentar hún út: „Þú heitir ekki neitt“. Þarna sérðu hvort að sessionið sé sett eða ekki.
Jæja, þá ætlum við að lokum að eyðileggja sessionið og gleyma öllum upplýsingunum. Það gerum við með því að gera...
Þarna er gleyma.php komið. Þetta ætti að útskýra sig nokkuð vel með leiðbeiningunum sem ég setti við hverja línu. En þarna er sessionið bara eyðilagt og frumstillt á ný. Svo er einhver texti prentaður út sem leyfir þér að athuga hvort skoda.php muni ennþá eftir þér eftir að þú ert búinn að eyðileggja sessionið.
Jæja, núna ættir þú að vera með grunnþekkingu í gerð sessiona. :)
Hægt er að skoða hvernig þetta virkar hérna.
Eini stóri munurinn á þessum tveim fyrirbærum (cookie & session) er sá að cookies eru geymd hjá notandanum en session eru geymd á servernum. Með session þá er cookie geymd hjá notandanum sem vísar í þetta tiltekna session (PHPSESSID). Ég mæli þess vegna frekar með session í flest verkefni í staðinn fyrir cookie, þar sem session eru mun öruggari heldur en cookies.
Hvernig virkar þetta svo?
Í byrjun, áður en þú notar session þarftu ávallt að ræsa það með því að nota session_start() fallið. Svipað og með setcookie() fallið þarf session_start() fallið að vera efst í skjalinu, þ.e. á undan öllu HTML, auðum bilum, o.s.frv.
Þetta lítur sem sagt svona út:
<?php
session_start();
?>
<html>
<head>
... o.s.frv.
Þarna ertu kominn með basic session initiation. En núna ætlum við út í aðeins flóknari hluti, þ.e. hvernig á að geyma session og hvernig á að ná í það aftur.
Áfram með smjörið!
Byrjum á því að búa til 4 skjöl. Eitt heitir form.php þar sem við sláum inn nafn, annað heitir vista.php þar sem við vistum nafnið inn í session, þriðja heitir skoda.php þar sem við náum í nafnið út úr sessioninu og svo að lokum heitir eitt gleyma.php þar sem við eyðum sessioninu og gleymum öllu.
Byrjum á forminu...
form.php
<form action="vista.php" method="post">
<b>Nafn:</b>
<input type="text" name="nafn" value="" />
<input type="submit" name="submit" value="Staðfesta" />
</form>
Þarna er form.php komið. Við þurfum ekkert að útskýra þetta nánar, þar sem þetta er bara basic HTML. Eina sem gæti kannski vafist svolítið um fyrir er þarna action="" parturinn. Þetta er bara hvert við viljum senda allar upplýsingarnar í forminu okkar. Í þetta skiptið sendum við þær á vista.php vegna þess að það skjal mun sjá um að afgreiða upplýsingarnar og vista þær í session.
Byrjum næst á vista.php skjalinu sem á að vista gögnin/upplýsingarnar okkar...
vista.php
<?php
# Ræsum sessionið
session_start();
# Athugum hvort að það sé búið að staðfesta formið (ýta á submit takkann)
if( isset( $_POST['submit'] ) )
{
# Göngum úr skugga um að nafn sé örugglega ekki tómt
if( $_POST['nafn'] != '' )
{
# Vistum sessionið. $_SESSION['nafn'] má vera $_SESSION['asdf'] þess vegna. Skiptir engu máli
$_SESSION['nafn'] = $_POST['nafn'];
# Prentum út textann sem vísar okkur á síðasta skjalið í ferlinu
echo 'Session vistað. <a href="skoda.php">Kíktu núna hingað</a>';
}
}
# Annars ef það er ekki búið að staðfesta formið (ýta á submit takkann)...
else
{
# Prentum við út þennan texta
echo 'Hvað ertu að reyna?';
}
?>
Þarna er vista.php komið. Þetta ætti að útskýra sig nokkuð vel með leiðbeiningunum sem ég setti við hverja línu. En þetta athugar bara hvort að ýtt hafi verið á submit takkann og hvort að það sé ekki örugglega eitthvað gildi í nafn POST breytunni. Ef svo er vistar hún sessionið og prentar út einhvern texta.
Næst er það skoda.php þar sem við athugum hvort að hann muni nafnið okkar...
skoda.php
<?php
# Ræsum sessionið
session_start();
# Athugum hvort að sessionið sé örugglega sett
if( isset( $_SESSION['nafn'] ) )
{
echo 'Sæll vertu, ' . $_SESSION['nafn'];
}
# Ef sessionið er ekki sett...
else
{
# Prentum við út þennan texta
echo 'Þú heitir ekki neitt.';
}
?>
Þarna er skoda.php komið. Þetta ætti að útskýra sig nokkuð vel með leiðbeiningunum sem ég setti við hverja línu. En þetta athugar bara hvort sessionið sé sett, og ef svo er prentar hún út: „Sæll vertu, Nafn“. En ef sessionið er ekki sett, prentar hún út: „Þú heitir ekki neitt“. Þarna sérðu hvort að sessionið sé sett eða ekki.
Jæja, þá ætlum við að lokum að eyðileggja sessionið og gleyma öllum upplýsingunum. Það gerum við með því að gera...
gleyma.php
<?php
# Ræsum sessionið
session_start();
# Athugum hvort að sessionið sé sett svo við séum ekki að eyða ekki neinu
if( isset( $_SESSION['nafn'] ) )
{
# Frumstillum session arrayinn
$_SESSION = array();
# Session fallið sem eyðir sessioninu
session_destroy();
# Prentum svo út textann
echo 'Session eyðilagt. <a href="skoda.php">Athugaðu núna hvort hann muni eftir þér</a>';
}
?>
Þarna er gleyma.php komið. Þetta ætti að útskýra sig nokkuð vel með leiðbeiningunum sem ég setti við hverja línu. En þarna er sessionið bara eyðilagt og frumstillt á ný. Svo er einhver texti prentaður út sem leyfir þér að athuga hvort skoda.php muni ennþá eftir þér eftir að þú ert búinn að eyðileggja sessionið.
Jæja, núna ættir þú að vera með grunnþekkingu í gerð sessiona. :)
Hægt er að skoða hvernig þetta virkar hérna.
Athugasemdir (

