Foros del Web » Programando para Internet » PHP »

No me saca el sistema web al caducar la sesion...

Estas en el tema de No me saca el sistema web al caducar la sesion... en el foro de PHP en Foros del Web. Hola que tal amigos, nuevamente consultando espero que me puedan ayudar... Estoy realizando un sistema web pero cargo las paginas en un div lo que ...
  #1 (permalink)  
Antiguo 28/01/2010, 22:44
 
Fecha de Ingreso: abril-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 1
No me saca el sistema web al caducar la sesion...

Hola que tal amigos, nuevamente consultando espero que me puedan ayudar...
Estoy realizando un sistema web pero cargo las paginas en un div
lo que sucede es que en la sesion que se crea al loguearse en el sistema se guardan
algunos datos que son necesarios para mostrar los datos de acuerdo al perfil logueado, sin embargo cuando caduca la sesion las variables pierden su valor, y entonces el sistema me muestra errores de consulta ocasionados porque ya no obtiene los datos.

Bueno lo que realmente quiero hacer es que cuando caduque la sesion automaticamente
me saque del sistema como foros del web o en el peor de los casos cuando se seleccione
una opcion dentro del sistema en lugar de cargar el contenido en el div se salga del sistema, algo asi como lo hace phpmyadmin.

He leido en foros que se realiza cambiando algunas variables de php.ini como gc_maxlifetime, gc_divisor y gc_probability, pero digamos que ese seria mi segundo problema ya que ahorita despues de que espero los 24 minutos por default configurados y colocando en el codigo que cuando no este definida la variable de session me redireccione a logout una funcion que me saca del sistema no lo hace, y no se porque, tendra algo que ver con los divs, ya que digamos la pagina que se va a cargar en el div se llama pero en dicha pagina coloco el codigo de cuando no este definida la variable de sesion me redireccione a la funcion logout.

Les agradezco su atenta ayuda, espero haberme explicado, si no con gusto lo explicare de otra forma. Gracias.
  #2 (permalink)  
Antiguo 29/01/2010, 01:17
Avatar de murderer  
Fecha de Ingreso: marzo-2009
Ubicación: Argentina/Misiones/Iguazu/Localhost
Mensajes: 196
Antigüedad: 15 años, 1 mes
Puntos: 2
Sonrisa Respuesta: No me saca el sistema web al caducar la sesion...

Podrias agregar un simple if y listo:

Código PHP:
if($_SESSION['usuario']){
//mostrar contenido
}else{
header('location:index.php')
// si no existe la sesion redirecciona a otra pagina

Saludos!
__________________
"Cuando te propones una meta todo el mundo conspira para que puedas lograrlo." Puedes encontrame en Twitter
  #3 (permalink)  
Antiguo 29/01/2010, 03:38
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: No me saca el sistema web al caducar la sesion...

Usa la función isset(), que comprueba si una variable está definida o no. Pero piensa que también puede ser que no hayas borrado bien las sessiones, por lo que el sistema puede seguir encontrándolas. Am, y recuerdo iniciar las sessiones ( session_start() ) antes de intentar ver si alguna sesión existe, y de eliminarlas.

Saludos!
__________________
Neversyn Software e Ingeniería
  #4 (permalink)  
Antiguo 29/01/2010, 07:48
 
Fecha de Ingreso: abril-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 1
Respuesta: No me saca el sistema web al caducar la sesion...

Gracias por su ayuda lo que ustede a bien me indican lo he realizado, inicio con session_start() luego utilizo la funcion isset de esta forma
Código PHP:
Ver original
  1. if(isset($_SESSION['usuario'])){
  2. //mostrar contenido
  3. }else{
  4. header('location:index.php')
  5. // si no existe la sesion redirecciona a otra pagina
  6. }
pero el header no reacciona y no me redirecciona, una cosa he notado, esto
funciona si la pagina en la cual aplico este codigo no se coloca en un div.
Espero su ayuda gracias
  #5 (permalink)  
Antiguo 29/01/2010, 07:50
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: No me saca el sistema web al caducar la sesion...

claro, porque está mal!!
Para que te funcione bien, usa el header así:
Código PHP:
Ver original
  1. header("Location: index.php")

Saludos
__________________
Neversyn Software e Ingeniería
  #6 (permalink)  
Antiguo 29/01/2010, 17:55
 
Fecha de Ingreso: abril-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 1
Respuesta: No me saca el sistema web al caducar la sesion...

Gracias zeuslife tenias razon se me habia pasado, bueno mira ahora el problema que tengo es que necesito que la session caduque despues de 10 minutos de inactividad, sin embargo como sabes por default viene a 24 minutos, he cambiado los valores de gc_maxlifetime=10, gc_divisor=1 y gc_probability=100 segun porque el recolector de basura tiene la probabilidad de que en un refresh pase de gc_probability/gc_divisor pero aun asi no funciona, tambien hay una variable llamada session.cache_limiter=nocache lei en un foro que se tiene que cambiar a private pero ni aun asi sera que me pueden echar la mano, me esta volviendo loco ya llego dos dias con eso y no lo logro hacer funcionar
  #7 (permalink)  
Antiguo 29/01/2010, 17:56
 
Fecha de Ingreso: abril-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 1
Respuesta: No me saca el sistema web al caducar la sesion...

Disculpen gc_maxlifetime=600 para los 10 minutos
  #8 (permalink)  
Antiguo 29/01/2010, 18:19
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: No me saca el sistema web al caducar la sesion...

Si puedes modificar php.ini, eso ya es editar el tiempo de duración. Te recomiendo ver esta página, para ver que esa cada variable, y editarlo a tu gusto.

Sesiones

Saludos!
__________________
Neversyn Software e Ingeniería
  #9 (permalink)  
Antiguo 29/01/2010, 18:30
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: No me saca el sistema web al caducar la sesion...

Los mas facil es que hacer algo asi :
Cuando te logues guarda otra variable de session con el tiempo. Y lo actulizas contantemene.
Código PHP:
# en login
# el mktime es un numero entero que representa la cantidad de segundo(marca de tiempo unix)
$_SESSION[ultimoacceso] = mktime();

# en donde controlas la session
   #600 son la cantidad de segundos que hay en 10 minutos
   # $tiempoMaximo va a ser el momento en el que se cerrara la session
   
$tiempoMaximo $_SESSION[ultimoacceso] + 600
   
# preguntas si esta el usuario loguado y si el tiempo actual es menor 
   # al tiempo maximo en el que se cerraria tu session. 
   
if( isset($_SESSION['usuario']) && $tiempoMaximo<mktime()  ){
         
# si es menor es que no pasaron los 10 minutos
         # solo deberias actualizar la variable de session.
         
$_SESSION[ultimoacceso] = mktime();


         
//mostrar contenido
   
}else{
      
header('location:index.php')
      
// si no existe la sesion redirecciona a otra pagina
   

Espero que me entiendas. Y te sirva.
  #10 (permalink)  
Antiguo 02/02/2010, 15:46
 
Fecha de Ingreso: abril-2009
Mensajes: 22
Antigüedad: 15 años
Puntos: 1
Respuesta: No me saca el sistema web al caducar la sesion...

Gracias a todos su cooperación ya pude realizarlo, al inicio lo realice modificando el archivo php.ini sin embargo aun cuando habia actividad me sacaba a los 10 minutos, por eso opte por la solución que me dio luis010182 pero cambie el mktime por el strtotime(date(Y-m-d H:m:s)) y luego aplique la misma lógica

Etiquetas: caducar, sitemap
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 04:17.