Foros del Web » Programando para Internet » PHP »

Destruir sesion cuando prione home o atras

Estas en el tema de Destruir sesion cuando prione home o atras en el foro de PHP en Foros del Web. Hola tengo un sistema e implemente sesiones.. todo bien pero mi jefe me hizo una acotacion y tiene razon ... por seguirdad compruebo que todas ...
  #1 (permalink)  
Antiguo 18/08/2006, 09:05
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
Exclamación Destruir sesion cuando prione home o atras

Hola
tengo un sistema e implemente sesiones..
todo bien pero mi jefe me hizo una acotacion y tiene razon ... por seguirdad compruebo que todas las paginas de mi sitio esten con sesion iniciada con un valor de autentificacion=1 sino lo mando al login nuevamente... y asi con todo el sitio... pero cuando el usuario presiona home en el navegador o nuevo -> ventana la sesion sigue activa y puedo por ejemplo entrar a google por ahi y luego volver a mi sistio por el boton Atrás del explorer ...

alguien saber como destruir la sesion al abandonar el sitio¿? de esta manera?!!!
__________________
sEIK! -Chile-
Analista Programador.
  #2 (permalink)  
Antiguo 18/08/2006, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Desgraciadamente lo puedes ver como una "falla" o una "cualidad" ya que es bueno por decir si el usuario cambia a una pagina y regresa a la tuya ya no se tiene que re-loggear (solo y solo si no cerro el browser).

Por eso varios sitios tienen leyendas que dicen: NO OLVIDE CERRAR SU SESION AL TERMINAR. Ya que pueden sin querer olvidarse cerrar e irse de la compu y dejar su sesion abierta.

Lo mas "recomendable" ahi es ajustar el tiempo de php para el session_max_lifetime asi puedes decirle que si pasan mas de 5 minutos inactivos se "cierre" la sesion y tengan que loggearse de nuevo.
  #3 (permalink)  
Antiguo 18/08/2006, 09:26
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 11 meses
Puntos: 0
m...
o intenta hacer algo con javascript para que cuando cambie de pagina se muestre un mensage el cual le diera la opcion de cerrar o dejar abierta la session
__________________
No lo pidas, Consiguelo por tu cuenta, hazlo y tendras exito.
  #4 (permalink)  
Antiguo 18/08/2006, 09:26
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
chuuu!!!! =(

mmm que mala onda... podria ser manipulable....

eso del session_max_lifetime esta el php config?

creo que lo intente para otra aplicacion pero no me funciono..
como lo realizo¿?
__________________
sEIK! -Chile-
Analista Programador.
  #5 (permalink)  
Antiguo 18/08/2006, 09:32
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 2 meses
Puntos: 0
pero si quieres que cuando vuelva al home se destruya la session en la pagina home pregunta si la session existe, si existe la puedes destruir de una o preguntarle con un confirm de javascript si quiere cerrar sesion
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #6 (permalink)  
Antiguo 18/08/2006, 09:36
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
lo que pasa que ...

es que claro tambien pense lo mismo pero el sistema que he realizado tiene varias pantallas y subsistemas... entonces cada vez que alguien quiera navergar por el sitio... claro me preguntara cada vez que ingrese al home del sitio... lo cual creeme seria un desastre.. ya que esto en un intranet...
__________________
sEIK! -Chile-
Analista Programador.
  #7 (permalink)  
Antiguo 18/08/2006, 09:38
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 2 meses
Puntos: 0
pero para mi el home es la pantalla donde tienes que logearte y despues de eso te deberia redireccionar a otra pantalla o estas trabajando con frames?
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #8 (permalink)  
Antiguo 18/08/2006, 09:46
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
no po !

el index del sitio es el login y despues de una validaciones medias truchas te redirecciona al Home...
con el login no ahi dramas... pero es lo mismo si lo quisiese unir igual seria un desastre para la usabilidad del sistema por dejar en manos del usuario cada vez que vea el home si desea cerrar sesion...
__________________
sEIK! -Chile-
Analista Programador.
  #9 (permalink)  
Antiguo 18/08/2006, 09:53
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 2 meses
Puntos: 0
una vez tube un problema parecido, y para evitar eso, en el index, o sea en el login hice una validacion, si la sesion existia lo redireccionaba al home eso quiere decir que si ya se logeo no volvera a ver la pagina del logeo hasta que cierre la sesion o esta expire, creo que es lo mas catolico y pon un boton para cerrar la sesion ahora si el usuario no la cierra, tendreas usar la sicologia del tacto (darle un buen cachamal hasta que entienda) jajajaja bromas.

saludos
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #10 (permalink)  
Antiguo 18/08/2006, 10:02
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
De acuerdo si esta bien

yo tambien logro que se identifique solo una vez y todo lo demas.. el drama es cuando desde ya en el home decide ir a google por ejemplo y el la barra de navegacion cambia la direccion y luego de ahi vuelve al home y la sesion sigue activa por que claro... no es el login es el home y como no ha cerrado el explorer y no ha presionado el boton destruir sesion ... la sesion ocntinua activa y eso es lo k kiero evitar ...

alguna otra ideita?:P
__________________
sEIK! -Chile-
Analista Programador.
  #11 (permalink)  
Antiguo 18/08/2006, 10:08
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 2 meses
Puntos: 0
creo que la respuesta es la funcion unload de html, ahora la pregunta seria te haz fijado que en algunas paginas cuando las cierras o cuando sales de ellas te arrija un mensaje? (la opcion b no estoy muy seguro) bueno en lugar de arrojar un mensaje destruyes la session, lo probe y si funciona :D
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #12 (permalink)  
Antiguo 18/08/2006, 10:12
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
si no seria dificil

eso esta bien...pero la verdad necesito k el usuario no vea este proceso...
que no dependa de el el cierre de sesion al salir del sistema
__________________
sEIK! -Chile-
Analista Programador.
  #13 (permalink)  
Antiguo 18/08/2006, 10:17
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 2 meses
Puntos: 0
pero nunca lo vera, mira seria una cosa asi

Código PHP:
<script>
function adio() {
<?php
 
// Destruye todas las variables de la sesi&oacute;n
session_unset();
// Finalmente, destruye la sesi&oacute;n
session_destroy();
?>
}
</script>
<body onunload="adio()">
y adios el usuario jamas vera el proceso, cuando vuelva a la pagina no existira la sesion y tendra que logearse nuevamente.
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #14 (permalink)  
Antiguo 18/08/2006, 10:47
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
igual no xD!

mira es casi lo mismo que implemente en el login ... pero no me sirve por k no discrimina si al salir del home entra a una pagina del sitio o del internet... la idea seria destruir solo si sale por completo del sistema no solo del home del sitio... eso k posteaste funcionaria pero con todas la paginas del sitio :S

o bastaria con un refesh y se destruiria la sesion mandandome al login ... lo malo que existe un sistema dentro del sitio que registra carga de archivos y debera refresacr cuantas veces sea necesario y no podria mandarlo a logear cada vez k refreske...
por eso IGUAL NO XD! :D
jajajjajajaj
acepto mas ideas ? :P
__________________
sEIK! -Chile-
Analista Programador.
  #15 (permalink)  
Antiguo 18/08/2006, 11:32
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 2 meses
Puntos: 0
la idea que tengo es media latera pero podria funcionar es la misma idea que te di antes, pero a la cabecera de cada pagina :s (lo se, lo se) declara una variable en 1 y antes de hacer el session_unset() y session_destroy() preguntas

if (isset($var) && $var == 1) {
session_unset()
session_destroy()
}

se me ocurre :p
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #16 (permalink)  
Antiguo 18/08/2006, 11:58
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
Exclamación mmmm

no entender tu idea :P

pero recuerda que si no cierra o destruye la sesion la variable de sesion "autentificacion = 1" siempre sera con ese valor entonces no tendre como distinguir si esta en el sitio o en el brouser esta navegando por internet despues de habrir la ventana por medio del sistema
__________________
sEIK! -Chile-
Analista Programador.
  #17 (permalink)  
Antiguo 18/08/2006, 12:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Repito lo mejor es controlar el tiempo de sesion y dejarlo en un valor muy bajo (pero no lo suficiente por decir si estan llenando un formulario y se tardan ej: 10 minutos y el tiempo de cierre es de 10 mintuos les va a arrojar un error).

El valor esta en el php.ini. Pero como te lo digo, puedes correr ese problema, que se acabe muy pronto la sesion.
  #18 (permalink)  
Antiguo 18/08/2006, 12:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Otra idea que se me ocurre es esta:
- Tener una pantalla de Bienvenida con un boton que diga ingresar al sistema.
- Una vez presionado el boton se abre una pantalla sin los botones de back y forward y sin la barra de direcciones
- Muestras ahi todo tu sistema
- Pones un boton de salir que forzosamente cierre la pagina actual.

Asi obligas al usuario a mantener la pagina abierta y si cierran pues se cierra la sesion.
  #19 (permalink)  
Antiguo 18/08/2006, 14:15
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
mmmm

Si Esta Bien... Tbm Pense En Eso...pero Encontre Que Era Muy Drastico Pero En Fin... :)


Gracias Por Su Tiempo Y Buenas Intenciones ;)
__________________
sEIK! -Chile-
Analista Programador.
  #20 (permalink)  
Antiguo 25/09/2006, 14:50
 
Fecha de Ingreso: septiembre-2006
Mensajes: 2
Antigüedad: 17 años, 7 meses
Puntos: 0
Hola seik, sabes una vez tuve el mismo drama que tu, al final nunca hize nada y deje todo a medias; ahora he vuelto a necesitar eso y es por eso que llegue aca.

En este preciso momento no tengo la solucion, pero en estos dias tengo que desarrollarla asi que apenas la pille lo pongo.

Por lo que me acuerdo de las soluciones que encontre antes pero nunca implemente estan:

Usar 2 frames
Uno de tamaño 0 donde tienes la sesion, asi todo la navegacion se produce en el otro frame de tamaño 100%, y ese frame de tamaño 0 tiene la solucion antes nombrada de en el unload destruir la sesion, en teoria deberia funcionar, pero no lo he probado.

La otra solucion usando la misma idea del onunload, es validar antes de destruir la sesion si esta dentro del dominio, osea: if (!tusitio.com) entonces destruye, ahora como extraer de una direccion del tipo: tusitio.com/modulo?=noticias.php&id=5 de tu barra de direcciones la parte del path (que es un valor que tu debes tener guardado por ahi, osea el nombre tu pagina) es un trabajo que falta, pero por lo que creo es una variable o una funcion php.

Espero se entienda, ahora si tu llegas a una solucion antes que yo, pues me la posteas, sino al reves :D

Chao.
  #21 (permalink)  
Antiguo 25/09/2006, 14:51
 
Fecha de Ingreso: septiembre-2006
Mensajes: 2
Antigüedad: 17 años, 7 meses
Puntos: 0
no pude poner los ejemplos con las 3w pq no me deja el foro, pero tu entenderas cierto?
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 13:37.