PHP Sessionit?

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ä)?
5370
Äänestä

Muut lukivat myös

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.

Äänestä
  • 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.

    Äänestä

  • "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.

    Äänestä

  • JKK kirjoitti:

    "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.

    Äänestä

  • JKK kirjoitti:

    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.

    Äänestä

Kommentoi aloitusta


PHPNoviisi kirjoitti:

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ä)?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu