Foros del Web » Programando para Internet » PHP »

cierre sesiones automaticamente

Estas en el tema de cierre sesiones automaticamente en el foro de PHP en Foros del Web. hola... alguie sabe como programar una sesion para que se cierra sola despues de un tiempo de inactividad?......

  #1 (permalink)  
Antiguo 05/06/2006, 14:34
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
cierre sesiones automaticamente

hola... alguie sabe como programar una sesion para que se cierra sola despues de un tiempo de inactividad?...
  #2 (permalink)  
Antiguo 05/06/2006, 14:36
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

Si pudieras detallas mas tu problema te lo agradecira mucho.

Saludillos.
  #3 (permalink)  
Antiguo 05/06/2006, 14:41
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
Sonrisa este es el problem...

necesito k la sesion se cierre automaticamente despues de un momento muy extenso.... me explico... imaginate que el usuario sale de su oficina y y deja la sesion habierta en el computador! justo llega alguien ajeno a esa informacion y decide sacarla! :s no crees k seria peligroso! =O!
bueno entonces la idea es que registre por ejemplo que pasaran 10 min sin actividad y se cerrara automaticamente... luego de eso pidiese reingresar el login de user... eso es :)
  #4 (permalink)  
Antiguo 05/06/2006, 14:54
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

En tu php.ini tendrias que modificar session.gc_maxlifetime . El parametro esta dado en segundos.

Saludillos.
  #5 (permalink)  
Antiguo 05/06/2006, 15:29
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
continuando con las molestias...

vale... pero donde esta ese archivo y como lo configuro... i am the best noob xD!
  #6 (permalink)  
Antiguo 05/06/2006, 15:41
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

si en archivo php pones lo siguiente te indica en donde esta el php.ini

Código PHP:
<?php

phpinfo
();

?>
Saludillos.
  #7 (permalink)  
Antiguo 05/06/2006, 15:41
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

si en archivo php pones lo siguiente te indica en donde esta el php.ini

Código PHP:
<?php

phpinfo
();

?>
Saludillos.
  #8 (permalink)  
Antiguo 05/06/2006, 16:33
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
aun no logro k mi sesion se cierre...

mauled realize lo k me propusiste... y no paso nada.... alguna otra idea a alguien por ahi?
  #9 (permalink)  
Antiguo 05/06/2006, 17:00
okram
Invitado
 
Mensajes: n/a
Puntos:
hola

mauled, el modificar session.gc_maxlifetime en el php.ini determinara la vida de la sesion en general, el problema plantea eliminar la sesion despues de un cierto tiempo de inactividad...

puedes poner algo asi:

este javascript en las cabeceras de todas tus paginas:
Código:
<script>
setTimeOut('location.replace("logout.php")',600000);
</script>
el segundo parametro (el tiempo) esta dado en milisegundos

ya en logout.php eliminas la sesion y todo eso

Salu2
  #10 (permalink)  
Antiguo 05/06/2006, 17:20
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

Seik! Realiza lo que te propueso okram.

¿Porque dices que no te sirvio modificar session.gc_maxlifetime ?

Saludillos.
  #11 (permalink)  
Antiguo 05/06/2006, 17:32
okram
Invitado
 
Mensajes: n/a
Puntos:
el usar un setTimeOut() tiene una cierta desventaja, ya que, por ejemplo, en el caso del llenado de un foirmulario extenso, que nos tome tiempo, la sesion terminara cerrandose y la pagina cambiandose antes de que hayamos terminado... podria hacerse con AJAX, y mostrar un popup donde podria volver a loguearse sin que se cierre la pagina que estaba viendo, o tal vez capturar todos los eventos que sucedan en la pagina, usando tal vez las funciones onChange, onMouseOver, onMouseOut, OnBlur, etc etc... pero seria muy extenso.

La idea de popup me parece mas factible, asi no se perderia el contenido de algun formulario o algo que se este editando o haciendo en ese instante

Salu2
  #12 (permalink)  
Antiguo 06/06/2006, 12:01
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
HOlA!

AUN NO LOGRO GENERAR QUE LAS SESIONES SE CIERREN SOLAS... =(

EL COMANDO

<script>
setTimeOut('location.replace("logout.php")',600000 );
</script>


LO IMPLENTE EN LAS CABEZERAS PERO NO PASA NADA... NOSE K HACER! ...ALGUNA OTR IDEA? :)
  #13 (permalink)  
Antiguo 06/06/2006, 14:57
okram
Invitado
 
Mensajes: n/a
Puntos:
el comando setTimeOut('action',time) ejecutara accion pasados time milisegundos, por lo que basicamente al pasar 600000 milisegundos, osea 600 segundos -> 10 minutos... tu navegador location.replace('logout.php') se dirigira a la pagina logout.php, de tal manera que en esa pagina podras realizar la eliminacion de la sesion, ya sea usando session_destroy() o con unset($_SESSION['variable']);

Por otro lado, tambien podrias usar cookies para almacenar los datos de autentificacion, podrias poner:

Código PHP:
$tiempo_de_vida 600;
setcookie('autentificado',1,time()+$tiempo_de_vida); 
donde $tiempo_de_vida = 600 es el tiempo de vida de la cookie en segundos...

Luego para verificar si la cookie existe usas el array global $_COOKIE:

Código PHP:
if($_COOKIE['autentificado'] == 1) {
echo 
'estas logueado';
} else {
die(
'no estas logueado');

Puedes leer mas sobre cookies y sobre esta funcion en http://www.php.net/setcookie

Salu2
  #14 (permalink)  
Antiguo 06/06/2006, 15:29
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
mmmm...
LOADING....
  #15 (permalink)  
Antiguo 06/06/2006, 15:59
okram
Invitado
 
Mensajes: n/a
Puntos:
¿¿¿<O.o>???
  #16 (permalink)  
Antiguo 06/06/2006, 16:21
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
igual no sirve

nose =( pero no! ._. !
  #17 (permalink)  
Antiguo 06/06/2006, 19:31
okram
Invitado
 
Mensajes: n/a
Puntos:
te lanza algun error?? q pasa?

intenta poner algo asi:

Código PHP:
<?php 
setcookie
('autentificado','si',time()+60); 
?>
y luego en otra pagina dentro de la misma ruta:

Código PHP:
$imprimir = (empty($_COOKIE['autentificado'])) ? 'la cookie no existe' 'la cookie si existe: '.$_COOKIE['autentificado'];
echo 
$imprimir
Este segundo script debera imprimir la cookie si existe: si durante un minuto (a partir de la ejecucion del primer script), y luego de un minuto: la cookie no existe

Si es asi, entonces no veo porque no pueda estar funcionando el codigo que te di en el mensaje anterior,....

Tal vez si posteas algo de tu codigo se podria visualizar mejor el posible problema

Salu2
  #18 (permalink)  
Antiguo 06/06/2006, 19:52
 
Fecha de Ingreso: junio-2005
Mensajes: 11
Antigüedad: 12 años, 6 meses
Puntos: 0
prueba con este codigo, puesto entre los <head> y </head>

<script LANGUAGE="JavaScript">
var pagina="tu_dirreccion"
function redireccionar()
{
location.href=pagina
}
setTimeout ("redireccionar()", tiempo);
</script>


donde :
tu_direccion es la ruta a la pagina que deseas y
tiempo es el tiempo que quieres que pase antes de ser redireccionado a la pagina

espero que te sirva, nos vemos
  #19 (permalink)  
Antiguo 07/06/2006, 10:33
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
ahi esta mi codigo para que lo puedas chekear. =)

mi codigo de session se compone de 4 paginas, las cuales interactuan segun sean necesario... ahi van:

1- mi primera pagina es el Login de user
Código PHP:
<?php
require("config.inc.php");
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?php print($gtitulo);?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="config.inc.css" rel="stylesheet" type="text/css">
<script language="JavaScript" src="config.inc.js"></script>
</head>
<body bgcolor="#FFFFFF" link="#000000" vlink="#000000" alink="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<form name="frmdatos" method="post" action="php/validar_usuario.php">
<table width="400" cellpadding="0" cellspacing="0" align="center">
    <tr><td height="30"></td></tr>
    <tr>
        <td colspan="4" bgcolor="#366dc0" height="30" class="ti_14_blanco" align="center"><strong>COMITE REGULADOR</strong></td>
    </tr>
    <tr><td colspan="4" height="20"></td></tr>
    <tr>
        <td rowspan="7" width="140" align="center" valign="middle"><img src="<?php print($gserver."/img/llaves_mail.jpg");?>" width="133" height="133"></td>
        <td colspan="3"></td>
    </tr>
<?php    if ($_GET["err"]=="1"){?>
            <tr><td colspan="4" class="te_9_rojo" align="center">usuario no válido.</td></tr>
<?php    } else {
            if (
$_GET["err"]=="2"){?>
                <tr><td colspan="4" class="te_9_rojo" align="center">clave no válida.</td></tr>
<?php        } else {
                if (
$_GET["err"]=="3"){?>
                    <tr><td colspan="4" class="te_9_rojo" align="center">usuario sin acceso.</td></tr>
<?php            } else {?>
                    <tr><td colspan="4" class="te_9_rojo">&nbsp;</td></tr>
<?php            }
            }
        }
?>
    <tr>
        <td height="25" width="45" class="ti_12_negro" align="right">Login&nbsp;</td>
        <td height="25" width="10" align="center" class="ti_12_negro">:</td>
        <td height="25" width="195" class="ti_12_negro"><input type="text" name="txt_usuario" class="text110" value="" maxlength="20"></td>
    </tr>
    <tr>
        <td height="25" width="45" class="ti_12_negro" align="right">Clave&nbsp;</td>
        <td height="25" width="10" align="center" class="ti_12_negro">:</td>
        <td height="25" width="195" class="ti_12_negro"><input type="password" name="txt_clave" class="text110" value="" maxlength="20"></td>
    </tr>
    <tr><td height="30"></td></tr>
    <tr><td colspan="4" align="center"><input type="submit" name="cmdentrar" class="button" value="Entrar"></td></tr>
    <tr><td height="30"></td></tr>
    <tr><td colspan="4" height="20"></td></tr>
    <tr>
        <td colspan="4" bgcolor="#366dc0" height="30" class="ti_10_blanco" align="right">&copy;2006</a>&nbsp;&nbsp;</td>
    </tr>
</table>
</form>
</body>
</html>
2-segunda pagina es el validar usuario... aki creo las variables de sesion y ademas, verifico si existe o no y lo direcciono segun corresponda:
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php require("../config.inc.php");?>
<html>
<head>
<title>Verificando Usuario...</title>
</head>
<body>
<?php

$usuario 
$_POST["txt_usuario"];
$clave $_POST["txt_clave"];

// Busca en BD el usuario ingresado
$sql "SELECT login, clave, nombre, apellido, perfil ";
$sql.= "FROM usuario WHERE login='".$usuario."'";

$rs_datos select_data($sql, &$f_est, &$c_est);
$ls_datos mysql_fetch_array($rs_datos);
if (
$f_est 0){
    if (
strtolower($ls_datos["clave"]) == strtolower($clave)){
        
$login $ls_datos["login"];
        
$nombre $ls_datos["nombre"]." ".$ls_datos["apellido"];
        
$nivel $ls_datos["perfil"];
        
        
session_start();
        
session_register("autentificado");
        
session_register("user_sec");
        
session_register("user_nombre");
        
session_register("user_nivel");
        
$autentificado "1";
        
$user_sec $login;
        
$user_nombre $nombre;
        
$user_nivel $nivel;
    
        
header ("Location:oficio_ls.php");
    } else{
        
header ("Location: ".$gserver."/index.php?err=2");
    }
} else {
    
header ("Location: ".$gserver."/index.php?err=1");
}
mysql_free_result($rs_datos);
?> 
</body>
</html>

en el siguiente pos pondre las 2 paginas k faltan.... se me acaban los max de caracteres del foro :D
  #20 (permalink)  
Antiguo 07/06/2006, 10:38
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
continuacion de lo arriba :D

3- en las paginas de mi sitio, agrego un
Código PHP:
<?php
                
require("seguridad.php");
para llamar a la siguiente validacion de sesion "seguridad.php"

Código PHP:
<?php
//TOMO VARIABLES DE SESION SOBRE LA AUTENTIFICACION
session_register("autentificado");
//COMPRUEBA QUE EL USUARIO ESTE AUTENTIFICADO
if ($autentificado != "1"){
    
//si no existe, envio a la página de autentificacion
    
header("Location:http://149.0.0.4/sec2/index.php");
    
//ademas salgo de este script
    
exit();
}
?>
verifico y siexiste la varible que habia creado y si no lo mando a logiarse nuevamente....

y por ultimo numero....

4- en esta pagina cierro la sesion y direcciono a login nuevamente destruyendola completamente... creo :s

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<?php

session_start
();

$_SESSION = array();

session_destroy();

?> 


<html>
<head>
    <title>Cerrando Sesión</title>
</head>

<body onload="javascript:document.location='../index.php'" >


</body>
</html>
asi trabajo la sesion ... si me puedes ayudar seria ideal... ese es todo mi codigo asi k si tienes dudas estare atento a tu respuesta ;)
gracias
  #21 (permalink)  
Antiguo 07/06/2006, 10:48
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
Sonrisa asp!

si tienes otro aporte para mi codigo ... sera bien recibido :P
  #22 (permalink)  
Antiguo 07/06/2006, 11:01
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

Y intentaste haciendo uso de setcookie()?... Como lo propone okram en el post #13
  #23 (permalink)  
Antiguo 07/06/2006, 11:23
okram
Invitado
 
Mensajes: n/a
Puntos:
el uso de setcookie() para autentificar usuarios seria lo ideal... y pues esta funcion te permite setear el teimpo de vida de la cookie

Puede ser que tu navegador tenga deshabilitadas las cookies

has lo que te dije en el post # 17 para ver si las tienes o no activadas

Salu2
  #24 (permalink)  
Antiguo 07/06/2006, 12:00
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
sabes el problema... mi jefe me dijo..."y si tienen desabilitadas las cokies?"
y la verdad tiene razon .. no ahi otra manera de hacerlo?
  #25 (permalink)  
Antiguo 07/06/2006, 12:13
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 11 años, 10 meses
Puntos: 0
Espero no estar diciendo una burrada, ya que me extraña que mauled y compañia no lo resuelvan, quizas lo que buscas es esto...
Código PHP:
    session_start();  //Comienza la sesion
    
define('MAX_IDLE_TIME'3); //Tiempo máximo de inactividad 
Este define lo vi no me acuerdo donde, yo lo uso siempre, a los 3 minutos de inactividad, y por inactividad me refiero a que al tio no hace nada de nada en la pagina. se destruye la sesion.

Espero que os sirva.

Salu2!
  #26 (permalink)  
Antiguo 07/06/2006, 13:08
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
no pasa nada! :(

mmm ... hice lo k me dijiste pero no paso nada... :(... lo agregue en mi codigo asi ...
Código PHP:
session_start();
        
/* Define how long the maximum amount of time the session can be inactive. */ 
        
define("MAX_IDLE_TIME"3); 
        
session_register("autentificado");
        
session_register("user_sec");
        
session_register("user_nombre");
        
session_register("user_nivel"); 
de todas formas mas arriba en el post esta mi post del codigo completo de la sesion y ahi algo k corregir ...? me ayudan plis...
yo se que ahi excelentes profesionales en este foro! demas que llegamos a un resultado! :D
  #27 (permalink)  
Antiguo 07/06/2006, 13:37
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
no kiero seguir con esto!.... yapo ayudenme un pokito mas..! :D

yo creo k talvez ustedes tienen toda la razon y mi sesion esta mal creada.. podrian chekearla y decirme si esta mal?
__________________
sEIK! -Chile-
Analista Programador.
  #28 (permalink)  
Antiguo 07/06/2006, 16:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por seik!
mmm ... hice lo k me dijiste pero no paso nada... :(... lo agregue en mi codigo asi ...
Código PHP:
session_start();
        
/* Define how long the maximum amount of time the session can be inactive. */ 
        
define("MAX_IDLE_TIME"3); 
        
session_register("autentificado");
        
session_register("user_sec");
        
session_register("user_nombre");
        
session_register("user_nivel"); 
de todas formas mas arriba en el post esta mi post del codigo completo de la sesion y ahi algo k corregir ...? me ayudan plis...
yo se que ahi excelentes profesionales en este foro! demas que llegamos a un resultado! :D
No deberías usar session_register() para trabajar con variables de sesión. USA en su defecto: $_SESSION (www.php.net/session)

Esto no resuelve tu pregunta incial . .pero es la base para que puedas aplicar algunas sugerencias que te han hecho y uses las sesiones como corresponde (sin problemas de compatibilidad por ejemplo).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #29 (permalink)  
Antiguo 07/06/2006, 16:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Me parece que están enfocando el tema de "matar" una sesión ante un evento o tiempo del "lado del cliente" .. cosa que NO puede producirse en muchos casos.

Por ejemplo .. cuando un script PHP "PURO" (nada que enviar al cliente a ejecutar, ninguna página que generar) tenga que "matar" esa sesión a cierto tiempo .. NO se podrá hacer con las técnicas propuestas de javacript -> forzar a llamar a cierto script PHP. Tampoco funcionará con navegadores con javascript deshabilitados (OK, ¿quedará algún navegador que no tenga javascript habilitado? .. seguro que no o los menos .. pero es otro motivo a tener encuenta).

El tratamiento que se le suele dar a "expirar" una sesión -indivitual- (sí, .. individual por qué PHP gestiona las sesiones y su tiempo de expiración en forma global para toda sesión creada en el servidor* es el de ir actualizando el tiempo que el "cliente"** pide una página de tu sitio y contrastar ese tiempo almacenado en algún medio: BBDD o similar que sea "de acceso común" no una variable de sesión por supuesto ya que pertenece -sólo- al cliente que lo crea ... con un tiempo que uno determine como "inactividad del usuario" .. es decir .. el tiempo que nosotros consideremos que si no ha "pedido" alguna página del sitio: por recargar la página, hacer click en un link, enviar un formulario .. etc se le considerará como que ya no está en el sistema expirando su sesión y/o denegando el acceso a tal proceso.

Así por ejemplo es como funcionan los sistemas de "usuarios activos" que veran (hasta en las FAQ's de este foro y en mensajes del foro en general) para determinar quien está en el sistema y quien no (sistema: sitio ... web).

Como veran, el soporte de sesiones de PHP es "pesimo" en este aspecto, no tiene ese "control fino" de las sesiones creadas que necesitamos muchas veces. Ahora .. el detalle está si en "implementar" uno de estos sistemas (re-inventar la rueda) o usar alguno ya hecho y en función de este "montar" (o desarrollar) tu -aplicación- que use sesiones.

Por ejemplo está la classe ADOdb con su manejo de sesiones .. el cual permite almacenar los datos en una BBDD de la sesión que creamos .. sus variables .. control del tiempo de expiración .. "matar" una sesión en forma arbitaria .. ver las sesiones en curso (como para un panel de administración del sistio) .. etc .. etc. Si quieren verlo:

http://phplens.com/lens/adodb/docs-session.htm

Otro ejemplo:
http://www.hawkee.com/snippet.php?snippet_id=1342

---------------------------------

Notas:
* session.gc_maxtimelife en combinación con el tipo de propagación del SID (cookies o URL) .. sobre todo del tiempo de expiración de la cookie que PHP crea si se propaga así el SID .. aunque en última instancia quien manda es la directiva mencionada)
** Cliente: PC/navegador que ejecuta tu script PHP o pide una página en general al servidor HTTP.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #30 (permalink)  
Antiguo 07/06/2006, 18:32
okram
Invitado
 
Mensajes: n/a
Puntos:
Como siempre Cluster apareciendo donde mas se le necesita con una gran-brillante idea...

seik!, tal y como te mencionó, debes usar $_SESSION para manejar sesiones...

Los javascript que se postearon fueron para cerrar una sesion en tiempo real, por asi decirlo, al redireccionar el navegador a una pagina PHP que eliminara los datos de la sesion...

Pero como bien lo dices Cluster, existe siempre (aunque parece extraño en estos tiempos) la posibilidad de que el js este deshabilitado....

Cita:
Iniciado por Cluster
El tratamiento que se le suele dar a "expirar" una sesión -indivitual- (sí, .. individual por qué PHP gestiona las sesiones y su tiempo de expiración en forma global para toda sesión creada en el servidor* es el de ir actualizando el tiempo que el "cliente"** pide una página de tu sitio y contrastar ese tiempo almacenado en algún medio: BBDD o similar que sea "de acceso común" no una variable de sesión por supuesto ya que pertenece -sólo- al cliente que lo crea ... con un tiempo que uno determine como "inactividad del usuario" .. es decir .. el tiempo que nosotros consideremos que si no ha "pedido" alguna página del sitio: por recargar la página, hacer click en un link, enviar un formulario .. etc se le considerará como que ya no está en el sistema expirando su sesión y/o denegando el acceso a tal proceso.
No entendi bien, sobretodo la parte en negrita

Se me ocurrio una idea basado en los comentarios de Cluster... pero yo si usaria sesiones para almacenar los tiempos ... checalo, ya que a mi me parece que si funciona, pero tal vez tenga errores...

seik!, tenemos una variable DE SESION llamada ultima_actividad ($_SESSION['ultima_actividad']) que nos guardara el tiempo en el que se realizo el ultimo acceso a cada pagina... Con esta variable, a mi parecer, podemos hallar una diferencia entre ese tiempo y el tiempo del siguiente acceso, para que asi, si excede algun dewterminado tiempo de inactividad, la sesion termine... algo asi:

esto al inicio de cada pagina php
Código PHP:
//session_start();
if(isset($_SESSION['ultima_actividad'])) {
$tiempo_inact_permitido 600// Tiempo de inactividad maximo en segundos
$diferencia time() - $_SESSION['ultima_actividad'];
if(
$diferencia $tiempo_inact_permitido) {
// CERRAMOS LA SESION
session_destroy();
echo 
'Se termino tu tiempo';
exit;
}
}
// ACTUALIZAMOS EL TIEMPO (O LO CREAMOS SI ES EL PRIMER ACCESO)
$_SESSION['ultima_actividad'] = time();

// CONTENIDO DE LA PAGINA 
Asi, si el tiempo que paso desde el ultimo acceso a una pagina es mayor al tiempo permitido, al entrar a una nueva pagina se cerrara la sesion

Me parece que asi debe funcionar... pero yo guardo todos los tiempos en sesiones... hay algo mal?

Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:51.