hackers! Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
15 de Marzo de 2010, 11:13:40
Inicio Buscar Ayuda Ingresar Registrarse
Noticias: Caracteres maximos de las firmas > leer
Gracias gente :
Ecuador!Guatemala!!UruguayBrasilRepublica DominicanaBolivia *USAColombia!ESPAÑA!Venezuela!Chile **El Peru!ArgentinaMexico
+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  PHP (Moderadores: carlmycol, shevchenko)
| | | |-+  Diferentes formas de cerrar sesión en PHP
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Diferentes formas de cerrar sesión en PHP  (Leído 407 veces)
Que buscas?..
shevchenko
Una vez un ordenador me venció jugando al ajedrez, pero no me opuso resistencia cuando pasamos al kick boxing
Moderador
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,191


Si la vida no te sonríe… ¡Hazle cosquillas!


Ver Perfil WWW
« : 22 de Mayo de 2009, 03:06:35 »

Diferentes formas de cerrar sesión en PHP

Cómo cerrar sesión por inactividad o por cierre del navegador por parte del usuario.

Veremos como cerrar la sesión del usuario cuando:

    * El tiempo de inactividad del usuario supere "x" cantidad de tiempo (segundos, minutos, etc...).
    * El usuario cierre el navegador y abandone por completo nuestro sitio.

Cierre de sesión por inactividad en PHP: módulo de control de datos

Algo que puede parecer muy obvio para unos y muy complejo para otros, pero que innegablemente muchos de nosotros nos hemos preguntado en algún momento: ¿Cómo caducar una sesión en PHP?

Ahora veremos que tan sencillo es. Solo tendremos que:

    * Crear una nueva sesión que guarde una fecha y hora
    * Comprobar en nuestra capa de seguridad el tiempo transcurrido entre la sesión guardada y la hora actual
    * Actualizar la sesión o destruirla según corresponda

Lo primero que debemos hacer entonces, es crear la nueva sesión y asignarle como valor, la hora actual. Esto lo haremos en el momento que el usuario ingresa al sistema con sus datos de acceso.

Código:
<?
//vemos si el usuario y contraseña es váildo
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){
//usuario y contraseña válidos
session_name("loginUsuario");
//asigno un nombre a la sesión para poder guardar diferentes datos
session_start();
// inicio la sesión
$_SESSION["autentificado"]= "SI";
//defino la sesión que demuestra que el usuario está autorizado
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
//defino la fecha y hora de inicio de sesión en formato aaaa-mm-dd hh:mm:ss
header ("Location: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>

Cierre de sesión por inactividad en PHP: módulo de seguridad

El segundo paso, será comprobar el tiempo transcurrido entre la fecha guardada y la hora actual en nuestra capa de seguridad y actuar en consecuencia.

Para hacerlo, tendremos que realizar un cálculo muy sencillo:

    tiempo transcurrido = (hora actual - fecha guardada)

Y luego, restará saber si el tiempo transcurrido es mayor, menor o igual que el tiempo de caducidad de la sesión (representado como "x"):

    si (tiempo transcurrido >= x), actúo en consecuencia a lo hallado

Para efectuar estos cálculos utilizaremos como unidad de tiempo el segundo. En nuestro ejemplo, caducaremos la sesión, transcurridos 10 minutos de inactividad (donde: 10*60 = 600 segundos). Para efectuar estos cálculos y tomar como unidad de medida el segundo, será necesario convertir las fechas a segundos. Para ello, utilizaremos la función strtotime.

Por lo tanto, calcularemos el tiempo transcurrido (tiempo transcurrido = (hora actual - fecha guardada)) de la siguiente manera:

Código:
<?
//iniciamos la sesión
session_name("loginUsuario");
session_start();

//antes de hacer los cálculos, compruebo que el usuario está logueado
//utilizamos el mismo script que antes
if ($_SESSION["autentificado"] != "SI") {
//si no está logueado lo envío a la página de autentificación
header("Location: index.php");
} else {
//sino, calculamos el tiempo transcurrido
$fechaGuardada = $_SESSION["ultimoAcceso"];
$ahora = date("Y-n-j H:i:s");
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));

//comparamos el tiempo transcurrido
if($tiempo_transcurrido >= 600) {
//si pasaron 10 minutos o más
session_destroy(); // destruyo la sesión
header("Location: index.php"); //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
$_SESSION["ultimoAcceso"] = $ahora;
}
}
?>

Autor: Eugenia Bahit
http://www.cmzk.com.ar/
En línea

Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión
Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC hacker descargas gratis
Ranking-Hits