tiempo de vida en sesiones php

Iniciado por mxsoun, 9 Agosto 2011, 20:58 PM

0 Miembros y 1 Visitante están viendo este tema.

mxsoun

quiero crear una sesion y que tenga un tiempo de vida de 5 minutos y despues se elimine, me encontre este codigo en internet pero no me funciona.
pero es justo lo que busco, no se por que no funciona

<?php
ini_set
("session.cookie_lifetime","300");
session_start();
$_SESSION["time"] = time();
if (
time() - $_SESSION["time"] < 300) {
echo 
'no ha pasado 5 minutos';
}else{
echo 
'ha pasado mas de 5 minutos';
session_destroy();
}
?>

Nakp

error de lógica :P será porque asignas una nueva hora justo antes de comprobar si ya pasaron 300 segundos? "no me funciona" no dice nada
Ojo por ojo, y el mundo acabará ciego.

EFEX

Ademàs, se dice que no es del todo exacto usar session.cookie_lifetime o session.gc_maxlifetime, yo lo haria de la siguiente forma:

crearsesion.php
Código (php) [Seleccionar]

<?php

//CREAR LA SESION Y REDIRECCIONAR
session_start();
$_SESSION['EXPIRA'] = strtotime("10 seconds"); //EL TIEMPO ADELANTADO 10 SEGUNDOS
header("Location: actualizarsesion.php");

?>



actualizarsesion.php
Código (php) [Seleccionar]

<?php
session_start
();

$_SESSION['TIEMPO'] = time(); //ACTUALIZAR LA HORA

//SI NO SE DECLARO $_SESSION['EXPIRA'] VOLVERLA A DECLARAR
if (empty($_SESSION['EXPIRA'])) { header("Location: crearsesion.php"); }

if ((!empty(
$_SESSION['TIEMPO'])) AND (!empty($_SESSION['EXPIRA'])) AND ($_SESSION['TIEMPO'] > $_SESSION['EXPIRA'] )) {
    
//SI SE EXCEDE EL TIEMPO ASIGNADO EN $_SESSION['EXPIRA'] DESTRUIR LA SESION
    
session_destroy();
    
session_unset();
    
//REDIRECCIONAR
}

echo 
$_SESSION['TIEMPO'].'<br>';
echo 
$_SESSION['EXPIRA'];

?>



Lo demas corre por cuenta tuya como implementarlo a lo que queres...
Fuente: http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes/1270960#1270960
GITHUB