Voisiko joku kertoa minulle kansankielellä miten nuo sessionit toimii ja mikä niiden perusperiaate on. Yritin lukea asiasta www.php.net manuaalista mutta en kyllä ymmärtäny juuri mitään ...
Onko oikein sanoa että sessionmuuttujat ovat kuin evästeet sillä erotuksella että ne tallennetaan palvelinpuolelle niihin voit tallentaa huomattavasti enemmän tietoa (eli ei samoja rajoituksia tallennettavan datan määrälle kuten evästeissä)?
Onko oikein sanoa että sessionmuuttujat ovat kuin evästeet sillä erotuksella että ne tallennetaan palvelinpuolelle niihin voit tallentaa huomattavasti enemmän tietoa (eli ei samoja rajoituksia tallennettavan datan määrälle kuten evästeissä)?
Vastaukset 5
Vanhimmat
Lukaseppas http://mureakuha.com/artikkelit/14
On oikein sanoa, että sessionit ovat kuin evästeitä, mutta tallennetaan palvelimelle, en tiedä sessionin ja evästeiden kokorajoituksia, mutta ei niihin ole järkevää älyttömästi tallentaa tietoa, mutta tuskin normaali käytössä raja tulee vastaan. Usein sessioniin tallennetaan vain id tunnisteita joiden avulla tietokannasta noudetaan tarvittavat tiedot, näin on totetutettu useimmat verkkokaupat.
Yksinkertaistettuna
1) Tulet sivulle, PHP arpoo sinulle sessionid tunnisteen ja tekee samalle tunnisteelle tiedoston palvelimelle. (Saat tunnisteen joko keksinä tai se lisätään linkkien perään)
2) Kirjoitat vieraskirjaan, PHP lisää sessioniin sinun nimesi $_SESSION['nimi'] = 'Joku';
3) Menet palaute sivulle, niin PHP noutaa tiedot sinun sessionid tunnisteen perusteella mitkä on tallenttu. Tässätapauksessa sinun nimesi
echo $_SESSION['nimi']; // tulostaa Joku
Joka kerta kun lataat sivun, niin palvelimelle menee sinun sessionid tunniste, joko keksistä tai osoiteriviltä. Arvaamalla, varastamalla toisen sessionid tunnisteen saat hänen tiedot, ellei tätä asiaa ole otettu koodatessa huomioon, yksilöimällä jollakin tapaa sessionit.
Joka sivun alussa missä tarvitaan sessioneita (joko lisätään tietoa tai haetaan) täytyy sanoa session_start(); joka ilmoittaa PHP-tulkille, että tarvitaan sessioneita, jolloin PHP tekee tarvittavat toimet, kuten luo sessionid tunnisteen, ellei sitä ole.
kiitti linkistä ja "pohjustuksesta", juuri tuollaista artikkelia yritin etsiä netistä eilen.. voisi mennä takas sinne www.php.net manuskalle yksityiskohtia lukemaan kun tämä perusperiaate alkaa avautua.
"en tiedä sessionin ja evästeiden kokorajoituksia"
Tähän sen verran että keksilöiden kokorajoitus taisi olla selaimesta riippuen noin 16 - 64 kilotavua.
Sensijaan session-muuttujat tallennetaan serverin omassa tietojärjestelmässä ja periaatteessa mikään ei estä sessiontiedoston kokoa joten sinne voi tallentaa noin 2 gigaa tietoa...
Tein joskus suorituskykytestauksia asian tiimoilta ja tuollainen megatavuluokan session-objektihäkkyrä ei oikeastaan tuntunut missään. Ihan ehkä kiireisimmille saiteille tätä ei voi suositella mutta se session kyllä venyy ihan kiitettävästi kapasiteettinsa puolesta.
Ja itseasiassa session-tiedostot saattavat olla serial-muotoiselle tiedolle nopeampi tallennuspaikka kuin tietokanta. Ellei data ole viitteellistä on session-muuttuja oikeastaan parempi kandidaatti väliaikaiselle datalle kuin tietokanta...
Ja mukavaahan on se että sessioniin voi tuupata kaikki muut PHP:n tietotyypit kuin resoucet eli erillistä tyyppimuunnosta tietokannalle ei tarvita...
Suorituskyky pysyy hyvin korkeana kunhan suurin osa aktiivisista sessioista pysyy levyvälimuistissa tai tiedostojärjestelmän cachessa.
Joo nyt alkaa hommat toimimaan, löysin vielä sivulta: http://www.crockford.com/JSON/js.html
stringify nimisen funktion jolla saan JavaScript objektin serialisoitua ja tallennettua session-tiedostoon.
Kiitos vastauksista.