Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: mxsoun en 9 Agosto 2011, 20:58 PM

Título: tiempo de vida en sesiones php
Publicado por: mxsoun en 9 Agosto 2011, 20:58 PM
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();
}
?>
Título: Re: tiempo de vida en sesiones php
Publicado por: Nakp en 10 Agosto 2011, 05:31 AM
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
Título: Re: tiempo de vida en sesiones php
Publicado por: EFEX en 10 Agosto 2011, 06:38 AM
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 (http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes/1270960#1270960)