Hello again!
Olen tässä yrittänyt googlettaa kuinka php:ssä istunnot saa vanhenemaan tietynajan kuluessa. Hakutuloksia oli laidasta laitaan, joten en oikein päässyt kärryille siitä, että mikä olisi "parhain" tapa tehdä se. Löytyykö php:stä valmiina mitään yksittäistä funktiota, jolla tämä onnistuisi?
En oikein tiedä, saako istuntoa vanhenemaan, voithan aina luoda cookien, jonka asetat vanhentumaan. Ei käyttäjä tiedä, onko se sessioni vai cookie mikä vanhenee. Voithan tietenkin säilöä istuntoon aikaleiman jolloin se vanhenee ja poistetaan. Till exempel "tunnus:vanhenemisaika".
Tallennat jokaisella istunnon käyttökerralla istuntoon kellonajan ja kun otat istunnon käyttöön, tarkistat onko. ko aika "liian vanha" eli enemmän kuin määräämäsi ajan ikäinen.
Mielestäni PHP:ssä vakiona istunnot vanhenee kun ne tapetaan ja siihen tappamiseen voi määritellä ajan. Ongelma vaan on se, että vanhojen istuntojen tappaminen tapahtuu "tuurilla" eli jos satunnaisluku on määritellyn rajan sisällä. Eli siellä voi joskus roikkua hyvinkin vanha istunto, varsinkin jos saitilla on vähän käyntiä ja jos satunnaisrajoja ei ole muutettu.
En käsittänyt noita PHP:n funktioita sessionien vanhentumiselle tms, mutta tein esimerkin miten minä tekisin, jolleivat cookiet kelpaa:
*** aseta_sessio.php <?php session_start(); $_SESSION["vanhentuu"] = "tunnus:" . (time() + 60 * 60); // Tunnin kuluttua loppuu aika header("Location: tarkista.php"); ?> *** tarkista.php <?php session_start(); if(isset($_SESSION["vanhentuu"])) { $osat = explode(":", $_SESSION["vanhentuu"]); if($osat[1] <= time()) { session_destroy(); } } else die("Vanhentunut sessio"); ?>
Miksi se tunnus pitää tunkea tuohon mukaan? Se vain aiheuttaa sen, että jos tunnuksessa on kaksoispiste niin tuo hajoaa. Järkevämpi olisi säilöä aika omaan istuntoalkioon ja tunnus omaan.
Eikös sen voi tehdä ihan säätämällä php.inin session_lifetime aikaa htaccess-tiedostossa?
Vai pitääkö jokin tietty istunto-rykelmä kestää pitempään?
Eikai PHP:n asetuksia voi säätää htaccess:n kanssa? :o PHP:ssä on php.inin säätöön oma funktionsa, ini_set().
se ini_set:llä tehty muutos vaan ei oo kovin pysyvä, eli .htaccessin voi määrittää asetuksia niin, ettei niitä tarvitse joka skriptinajokerralla säätää erikseen.
Nii-i ja sitten kun vielä tietäisi, että mikä näistä on parhaintapa... Itse ajattelin toteuttaa tuolla Grezin ja trilogin ehdotelmalla, sillä sitten voidaan tapauskohtaisesti määrittää eri istuntoaika, tosin tuo Pekka Mansikan ehdotelma on todennäköisesti nopein ja helpoin... Kiitos jeesistä!
Aihe on jo aika vanha, joten et voi enää vastata siihen.