Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: istuntojen vanhenemisaika

Sivun loppuun

Triton [07.05.2010 13:50:35]

#

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?

Macro [07.05.2010 13:54:31]

#

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

Grez [07.05.2010 13:57:28]

#

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.

Macro [07.05.2010 14:33:55]

#

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");

?>

trilog [07.05.2010 14:54:20]

#

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.

pistemies [07.05.2010 15:10:47]

#

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?

Macro [07.05.2010 15:14:02]

#

Eikai PHP:n asetuksia voi säätää htaccess:n kanssa? :o PHP:ssä on php.inin säätöön oma funktionsa, ini_set().

Grez [07.05.2010 15:21:45]

#

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.

Triton [08.05.2010 03:12:19]

#

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ä!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta