Foros del Web » Programando para Internet » ASP Clásico »

Evitar que un usuario ingrese más de una vez

Estas en el tema de Evitar que un usuario ingrese más de una vez en el foro de ASP Clásico en Foros del Web. saludos desde Colombia quisiera saber si pueden ayudarme en un problema que tengo con sesiones en ASP. tengo una aplicación que tiene usuarios (y sus ...

  #1 (permalink)  
Antiguo 27/04/2005, 14:53
 
Fecha de Ingreso: octubre-2003
Ubicación: Bucaramanga, Santander, Colombia, Suramérica
Mensajes: 20
Antigüedad: 20 años, 8 meses
Puntos: 0
Evitar que un usuario ingrese más de una vez

saludos desde Colombia

quisiera saber si pueden ayudarme en un problema que tengo con sesiones en ASP.

tengo una aplicación que tiene usuarios (y sus respectivas contraseñas) almacenadas en una base de datos MySQL.

para entrar a la aplicación, se requiere iniciar sesión ingresando el nombre de usuario y contraseña. por supuesto, utilizo variables de sesión para los valores de cada uno.

el problema es... qué pasa si un mismo usuario inicia sesión en dos o más computadores al mismo tiempo? es decir, qué sucede si en el computador A inicio sesión como Pedro con contraseña 1234 y al mismo tiempo en otro computador B inicio sesión como Pedro con contraseña 1234?

hasta donde sé, el valor de la variable de sesión sería el mismo...
pero la cuestión es... ¿es posible controlar que sólo pueda iniciar
sesión una vez?

muchas gracias.
  #2 (permalink)  
Antiguo 27/04/2005, 15:07
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Sip, coloca una marca en un campo de la BD en cuanto verifiques sus datos. Cuando termine la sesión quitas esa marca.

Saludos
  #3 (permalink)  
Antiguo 27/04/2005, 15:28
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Esto seria peligroso

Myakire, lo malo de ese metodo es que no sabras exactamente cuando se va, y si el usuario cierra su navegador sin un Log-Out pues quedaria permanente hasta que corre en onSession_end del global.asa, que es el unico punto que se me ocurre para quitar la marca.

Otra cosa que hacen muchos es por actividad, es decir lo mismo que tu mencionas, pero para no dar de nuevo acceso revisan la actividad del cliente, es decir, en la DB llevas una fecha de ultima actividad, y basado en eso cuando han pasado mas de X minutos desde tu ultima actividad entonces es cuando permites un log-in nuevamente.
  #4 (permalink)  
Antiguo 27/04/2005, 15:39
 
Fecha de Ingreso: octubre-2003
Ubicación: Bucaramanga, Santander, Colombia, Suramérica
Mensajes: 20
Antigüedad: 20 años, 8 meses
Puntos: 0
saludos a ambos, y gracias por responder.

estuve leyendo y...

no sería suficiente con un "session(TheirUserName)=true" ?

chau
  #5 (permalink)  
Antiguo 27/04/2005, 16:28
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola

Lo que dices no se puede, porque esas variables de sesion son para cada usuario, es decir, el caso que tu pusiste:

1. Entra Pedro y hace sesion

2. Entra Pedor y hace sesion

Pues bueno, las variables de sesion para Pedro 1 y Pedro 2 son separadas y exclusiva, Pedro 1 no puede ver lo de Pedro 2 y viseversa
  #6 (permalink)  
Antiguo 28/04/2005, 07:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Cierto Neuron_376, es en ese evento donde se quitaría dicha marca. Ahora, no se que sea más exigente para el servidor, tener X número de sesiones activas "inútiles" hasta que se caduquen automáticamente o tener una tarea programada que se ejecute cada tiempo (que debe ser poco para que se anteponga al global.asa) que esté checando la tabla de usuarios.
  #7 (permalink)  
Antiguo 28/04/2005, 11:07
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 22 años, 5 meses
Puntos: 3
Neuron_376, eso de la actividad.. a q te refieres? osea cada vez que el usuario vaya a otra página se grabe en su registro la hora en que cambia de páginas? no entiendo bien eso... me interesa cómo hacer lo que quiere sebastown.... pero que realmente al final funcione todo.. osea el usuario se loguea y se graba en su registro q ya se grabó... luego si alguien quiere loguearse se revisa en la BD si se puede.. el problema es cuando el usuario deja la página.... cuando hace un logout se quita esa "marca" de la BD, pero si cierra la ventana no más? el global.asa en ese momento funciona no? si no me equivoco... se tendría que trabajar con el global.asa no? y podemos guardar variables o sessions en el global.asa y asi saber si el usuario tal está logueado o no? o las sessions solo se crean para cada persona q entra y no son globales para TODAS las personas q estan viendo mi página?
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #8 (permalink)  
Antiguo 28/04/2005, 11:46
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Bien

- eso de la actividad.. a q te refieres?
Exacto lo que dices, en cada pagina se va ACTUALIZANDO en el registro su actividad, esto sirve no solo para el caso de si esta logeado o no, sino para muchas otras cosas como en este foro en la seccion de "Quienes estan en linea", donde si entras miras los que estas en linea y que estan haciendo

- cuando hace un logout se quita esa "marca" de la BD, pero si cierra la ventana no más? el global.asa en ese momento funciona no?

Eso es lo malo, el global.asa no se activa inmediatamente, espera hasta que se cumple el tiempo de session.timeout para correr (Y OJO - ALGUNAS PERONAS DICEN QUE NO SIRVE ESE METODO, EN UNA PRUEBA CON ESO, A MI SI ME FUNCIONO, PERO SI OTRAS PERSONAS CON PRUEBAS DICEN QUE HA FALLADO, ES POSIBLE QUE ESTE SEA UNO DE ESOS TANTOS METODOS INSEGUROS QUE EXISTEN EN PROGRAMACION

- o las sessions solo se crean para cada persona q entra y no son globales para TODAS las personas q estan viendo mi página?

Se crean exclusivas para la persona logueada, no globales, lo que es de forma general es todo lo que pones en APLICATTIONS VARS

Y como dijo Myakire, la pregunta que debes hacerte es que prefieres...

1. tener X número de sesiones activas "inútiles" hasta que de alguna forma la quites.

Y si, mira, ahora recuerdo, tengo un sistema de chat en el cual si pasan X minutos de inactividad te saca, pero es algo mas complicado, en la base de datos SQL SERVER tengo programado un script que busca la fecha de la ultima actividad de los que estan en una tabla de usuarios activos, y cuando se cumple X tiempo automaticamente los saca, eso podrias haces, directamente algo en el servidor de bases de datos, y se ajusta a lo que quieres y menciono Myakire y lo que te dije de actividad

1. El usuario ingresa y poner la marca en la base de datos.
2. Necesitas ir actualizando en cada pagina la actividad.
3. Este proceso en SQL SERVER revias esa actividad y cuando han pasado mas de 30 minutos de inactividad entonces quita la marca...

Para esto, bueno, vienen otros detalles, cuando el usuario cierra el browser y quiere entrar de nuevo, entonces no lo dejara, y ahi tu tienes que mostrar algun mensaje de lo que esta pasando, y decirle "ES CULPA TUYA, PARA QUE NO CIERRAS TU SESION..jajajajja "

Bueno, asi tambien los educas...

Bien, como esto existen mis metodos diferentes, pero lo de actividad tiene muchas ventajas para, logs, estadisticas, banner, etc, un chorro de aplicaciones.

Bueno, me extendi un poco, por lo menos ya sabes lo que no puedes hacer y porque no se puede, ya con esto tienes bastante para empezar a desarrollar tu propia solucion.

Suerte!!
  #9 (permalink)  
Antiguo 28/04/2005, 13:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Eso es lo que me agrada de Neuron_376, que da explicación detallada de todo lo que plantea ........me recuerda a otro master que emigró a .NET llamado Bravenap ¿no serán el mismo?

  #10 (permalink)  
Antiguo 28/04/2005, 13:25
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Cita:
..me recuerda a otro master que emigró a .NET llamado Bravenap..
Con razón hacía tiempo no lo veía (no suelo entrar al foro .net)
__________________
...___...
  #11 (permalink)  
Antiguo 28/04/2005, 15:02
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
jajaja

No soy el mismo, soy otro , pero es que si no explico, luego me dicen que no es cierto.. jajajaja

Suerte!!

PD: Gracias por lo de master, jajajaaja :-p

Última edición por Neuron_376; 28/04/2005 a las 15:10
  #12 (permalink)  
Antiguo 28/04/2005, 15:20
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
No, no es cierto!!!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #13 (permalink)  
Antiguo 28/04/2005, 15:25
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
No puede ser

siempre tu u_goldman, porque pues, ya que me sentia bien

jajajaja
  #14 (permalink)  
Antiguo 28/04/2005, 15:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Oh pues, solamente para decir que no, "ya no chille"
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #15 (permalink)  
Antiguo 28/04/2005, 17:47
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
no se si puede servir pero desde hace tiempo que me interesa esa aplicacion para controlar una pagina de la compañia donde trabajo, pero en Javascript hay una funcion que cuando uno cierra la ventana abre otra, voy a ver esi se puede adaptar y pasar el usuario a la nueva ventana que se abre por unos instantes para solo sacar la marca de la base. Se podra Utilizar?
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #16 (permalink)  
Antiguo 28/04/2005, 17:53
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Si, se puede utilizar. Pero en los usuarios de Firefox y de optros navegadores que tengan algún sistema de anti-popups no tendría efecto. Me parece, sólo eso, que no hay nada 100% fiable al respecto
__________________
...___...
  #17 (permalink)  
Antiguo 28/04/2005, 17:58
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
Uf menos mal que respondiste casi me pongo a tirar lineas , ese es el problema FireFox sera muy bueno pero hay que adaptarse a los navegadores y esto ha traido mas trabajo para todos
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #18 (permalink)  
Antiguo 28/04/2005, 19:06
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
De hecho

No existe el evento onunload que realmente funciona correctamente, onunload funciona en un link, cuando haces back, etc, pero cuando cierras la ventana directamente no se acciona, existe un metodo para saber cuando se cierra, pero se basa en el nombre de la ventana actual, cuando este nombre es muy largo se dice que se realizo un onClose, pero no es nada seguro, estuve haciendo muchas pruebas con eso porque queria lanzar un script que matara las sessiones del cliente al momento de cerra su ventana, y despues de muchas pruebas con casos diferentes quedo en 65 % bien y el resto mal.

Entonces opte por no aplicar ese metodo por ser inseguro.
  #19 (permalink)  
Antiguo 28/04/2005, 22:41
Avatar de CoaxServices  
Fecha de Ingreso: diciembre-2004
Mensajes: 71
Antigüedad: 19 años, 5 meses
Puntos: 0
Sonrisa

Escribe en la DB usando el Global.asa... cuando el usuario sale... o cierra la ventana se dispara el evento OnSessionEnd en el Global.asa y usas ese evento para eliminar la fila de la DB.

Ejemplo:
El usuario pedro se loguea y se crea su sesion usando el ID:
Código:
Session("UserID") = "Pedro"
Cuando termina su sesion o cierra la ventana se dispara el Global.asa
Código:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
'Usas este evento el cual dispara una funcion:
Sub Session_OnEnd
endSession
End Sub
 
Function endSession
Set objADOConn = Server.CreateObject("ADODB.Connection")
objADOConn.ConnectionString = "Tu string de conexion a la DB"
objADOConn.Open
 
SQL = "DELETE FROM TUTABLA... etc"
objADOConn.Close
Set objADORS = nothing
Set objADOConn = nothing
End Function
</SCRIPT>
Esto te sirve sin problema. Recuerda que va en el global.asa

Cordialmente,
__________________
http://www.coaxservices.com

Última edición por CoaxServices; 28/04/2005 a las 22:54
  #20 (permalink)  
Antiguo 28/04/2005, 23:09
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
Neuron tienes razon con tu acotacion hice varias pruebas y desde antes he tratado de trabajar este problema pero el javascript lamentablemente no es seguro y no funciona bien, pero debe existir algun metodo que sea efectivo no creo que exista falencias en ese sentido, voy a continuar buscando info esta muy interesante este asunto.
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #21 (permalink)  
Antiguo 29/04/2005, 08:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
Hola, por que en lugar de utilizar una base de datos, por que no utilizan una variable del tipo aplicacion, por ejemplo:

Sub Application_OnStart
'==Visual InterDev Generated - startspan==
'Iniciamos Arreglo de usuarios
Dim Arreglo(1)
Arreglo(0) = "Dummy"
Application("UsuariosAutenticados") = Arreglo
End Sub

Posteriormente en el login.asp (o la pagina que utilizan para autenticar)
'Despues de autenticar
Dim ArregloUsuario
Dim UserLogon
ArregloUsuario = Application("UsuariosAutenticados")'Cargamos nuestro arreglo
UserLogon = Filter(ArrayUser,NombreUsuario) 'Buscamos al usuario
If UBound(UserLogon) > -1 Then
'El usuario ya existe...... no lo dejamos entrar.
Else
'Tenemos que agregar al usuario a nuestro arreglo....
ReDim Preserve ArregloUsuario(UBound(ArregloUsuario) + 1)
ArregloUsuario(UBound(ArregloUsuario)) = NombreUsuario
Application.Lock
Application("UsuariosAutenticados") = ArregloUsuario
Application.UnLock
End if

Es lo que se me ocurre a mi.....
  #22 (permalink)  
Antiguo 29/04/2005, 08:22
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
Me falto algo, en el archivo global.asa en la parte session_end, tenemos que quitar al usuario.... y ademas se me paso, que se tiene que poner el nombre del usuario en una variable de tipo session.

Dim UsuariosA
UsuariosA = Application("UsuariosAutenticados")
UsuariosA = Filter(UsrArray,Session("NombreUsuario"),False)

Application.Lock
Application("UsuariosAutenticados") = UsuariosA
Application.UnLock
  #23 (permalink)  
Antiguo 29/04/2005, 09:51
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
OnSesssion_End

CoaxServices ... pregunta? tu has probado ese metodo que describes y fuciona ???, mira, ese metodo yo lo probe alguna vez y pasa esto:

1. Si cuerras el navegador no funciona atuomaticamente. Entonces el usuario tiene que hacer un cerrar session afuerzas, entonces pues no es bueno basarte en el.

2 Si cerraste el navegador, ese evento se desata hasta que ocurre un session.timeout

3. A mi me funciono en unas pruebas como paso 1 y paso 2, pero a algunas personas no les funciono, y estudiando el tema me parece logico, sin embargo este podria ser un problema de configuracion, o bien un procedimiento inseguro que por lo tanto no es recomendable...

Pero por eso te pregunto si a ti si te ha funcionado correctamente en tus pruebas ?

ANEXO: Ten en cuenta que el evento si se dispara, pero lo que necesitamos es algo asi:

update xxxx where ID = Session("ID")

Es decir, aun seguir trabajando con la session del usuario, y estudiando un poco el tema me parece que es logico que no funcione, tal vez en mi prueba hice algo mal y me arrojo resultados erroneos, y como ya no use ese metodo no hice pruebas mas profundas.

Pero bueno, tu dinos que has encontrado.
  #24 (permalink)  
Antiguo 29/04/2005, 13:12
Avatar de kotayk  
Fecha de Ingreso: marzo-2005
Mensajes: 35
Antigüedad: 19 años, 2 meses
Puntos: 0
Y como se hace para en el evento unLoad cambiar el valor de una variable de sesion???? bah... se puede?
  #25 (permalink)  
Antiguo 29/04/2005, 13:34
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
El evento OnLoad es del cliente y no puedes cambiar variables de servidor ahí.
  #26 (permalink)  
Antiguo 29/04/2005, 21:47
Avatar de CoaxServices  
Fecha de Ingreso: diciembre-2004
Mensajes: 71
Antigüedad: 19 años, 5 meses
Puntos: 0
Sonrisa

Hola, Neuron_376

Si lo he probado, en un directorio virtual y me ha funcionado bien. Por el modelo de mi aplicación, en la cual guardo estadisticas de la entrada y salida del usuario, guardo en la DB estos datos.

En el código que puse, puedes ejecutar el update xxxx where ID = Session("ID") porque hasta ese momento no se ha eliminado la sesion.

Pero lo que menciona masterboy6666, es completamene valido. Lo unico es que tal vez IIS mantenga este dato unos minutos mas mientras la session se limpia de la memoria.

La otra opcion es complementar lo dicho, con guardar otros datos como la IP de la maquina, el nombre, etc. Pero estoy convencido que la solucion es, para aumentar las posibilidades, es usar el global.asa y javascript con el UnLoad en el body que llame una ventana con un asp que tenga el "session.abandon()".

En mi caso solo en una página tengo el unload que llama un window.open con un asp que se asegura de abandonar la sesion. Usando este concepto puedes cambiar las variables de sesion que quieras o ejecutar el update xxxx where ID = Session("ID") en dicha pagina asp.

Última edición por AlZuwaga; 30/04/2005 a las 09:47 Razón: No voy a permitir estas firmas en el foro ASP, que se queden en DyH
  #27 (permalink)  
Antiguo 30/04/2005, 01:29
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Gracias por responder

entonces no estaban mal mis pruebas estuvieron bien en esa ocasion, pero entonces si depende de alguna configuracion, necesitare investigar mas del acerca del tema, por otra parte, lo que dices del unload... mira, ese evento es muy polemico, pero bien, directamente, ¿ Tu como sabes cuando el usuario cerro directamente el navegador ?
  #28 (permalink)  
Antiguo 30/04/2005, 12:04
Avatar de CoaxServices  
Fecha de Ingreso: diciembre-2004
Mensajes: 71
Antigüedad: 19 años, 5 meses
Puntos: 0
En ese escenario lo unico que puedes hacer es esperar los 20 minutos, que es el tiempo por defecto que dura la sesion en IIS, para que el Global.asa dispare el evento.

A no ser que tu en el mismo global.asa o en IIS, acortes ese tiempo de sesion. Eso lo define tu aplicacion.

Última edición por AlZuwaga; 30/04/2005 a las 13:44 Razón: Mismo que el anterior
  #29 (permalink)  
Antiguo 30/04/2005, 14:39
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Bien

Entonces estamos en lo mismo que antes, el onEnd funcionara hasta que llegue al timeout, entonces tendras usuarios bloqueados por X minutos (anexo, no todos tienes 20 minutos, hay sitios hasta con 3 horas como sucede en yahoo, hotmail, etc, porque saben que hay personas escribiendo y pueden tardar mucho tiempo), entonces estamos como al principio, tenemos usuarios bloqueados durante X tiempo porque la marca nunca se quito, y hay que explicar ese caso a los usuarios, porque si cierran su navegador y luego quieren entrar nuevamente no podran.

Bueno, por lo menos confirmamos lo mismo entre todos, porque todo lo que podamos hacer para asegurar un onClose (que no existe) son metodos inseguros. Suerte!!
  #30 (permalink)  
Antiguo 30/04/2005, 14:41
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Bien

Entonces estamos en lo mismo que antes, el onEnd funcionara hasta que llegue al timeout, entonces tendras usuarios bloqueados por X minutos (anexo, no todos tienes 20 minutos, hay sitios hasta con 3 horas como sucede en yahoo, hotmail, etc, porque saben que hay personas escribiendo y pueden tardar mucho tiempo), entonces estamos como al principio, tenemos usuarios bloqueados durante X tiempo porque la marca nunca se quito, y hay que explicar ese caso a los usuarios, porque si cierran su navegador y luego quieren entrar nuevamente no podran.

Bueno, por lo menos confirmamos lo mismo entre todos, porque todo lo que podamos hacer para asegurar un onClose (que no existe) son metodos inseguros. Suerte!!

Anexo: El unload tampoco es seguro, porque nunca sabes cuando el usuario esta saliendo de su cuenta o simplemente hizo click en una liga, para eso se necesita todo un sistema donde cada liga pone una variable que dice que estas haciendo click, pero bueno, tambien pasa que algunos usuarios hacen un "Abrir vinculo en nueva ventana", y si fuera posible un onClose, entonces tendrias antes que verificar que no hay mas ventanas abiertas, etc.... en un show completo
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:43.