Como hacerlo? (administracion usuarios web)

OsCuRiDaD

Hola!
Busco algo de orientacion para poder hacer lo siguiente:

Tengo preparado un sistema de login y demas con su sistema de recuperacion de claves etc. Ahora queria hacer el tipico panel de ver cuantos usuarios activos hay mirando la pagina (no tengo problema con este), cuantos estan logueados, etc etc.

Mi problema es con los logueados, ya que no se como volverlos a poner en "no logueados". Solo se me ocurre hacerlo si le dan al enlace de "log out" pero si la sesion expira como puedo actualizar la base de datos para marcar a ese usuario en concreto como que ya no esta conectado?

Uso ASP clasico, y lo de las conexiones activas lo hice tirando de application y aumentando una variable al iniciarse una sesion, que a su vez disminuye en 1 cuando a un usuario se le expira la sesion (pero no todos los usuarios a los que se les expira una sesion son gente registrada y logueada en la pagina...)

Espero que se entienda mi problema :P

OsCuRiDaD

Bueno ya encontre la solucion a mi problema, en mi caso parece ser que si en el global.asa no daba de alta ninguna variable de session, luego por algun motivo el session on end no ejecutaba nada de lo que le pasaba (en cuanto a variables de session, las de application en cambio si).

Asi que para arreglarlo inicio una variable de session en global.asa en el evento on start y ahora al expirar mi sesion guardo la id almacenada en sesion para poner al usuario como desconectado o cualquier otro cambio necesario.

Espero que le sirva a alguien

Y0K3S3

El rollo no seria ese si no este.

Comprobacion de usuario si esta ok el pass y el usuario entonces hacemos esto:

Session("usuario")="Y0k3s3";

y cuando quieres el logout pues haces esto->

Session.Abandon();

OsCuRiDaD

Ya el problema era cuando una sesion expiraba (por lo que no se producia el session.abandon por peticion mia), asi que tenia que tirar de eventos por eso lo del global.asa

Y0K3S3

Ah entiendo lo que querias hacer.No se si lo habras hecho asi pero yo hubiera puesto en el global.asa

Sub Session_OnEnd

Response.Redirect("paginadelogin.asp")

End Sub

8 días después
RedHat

si tienes config.asp o lo que sea, o un archivo que LEA de lo primero siempre la página en cuestión haces una cosa,

registras la variable $ahora = time();
registras la $ip y $ahora en tablas de bd como ip y time respectv.

config--------------------------

$expire = $bd[time] + 60segs o lo que fuese.

si $bd[time] es diferente que $expire (cotejandolo con la ip, claro está)

le haces función de logout

si nó... no haces nada.

le haría el logout clickase donde clickase, ya que el config haria la lectura del tiempo en idle, y si pasan de 60segs pues alk proximo click le da el sesion expire.

yo te lo pongo como lo haría en php, aunque no se si se parecen en algo para que puedas entenderlo.

Y0K3S3

#6

En asp se hace como se lo he puesto yo.

pq tienes objectos como Session.Timeout (por defecto a 20) donde le puedes indicar el tiempo que duara una session inactiva (sin navegar). Cuando ese tiempo se acaba (lo gestiona el ISS) se lanza el evento del global Sub Session_OnEnd que he puesto en #5 y ahi le dices que lo chute a la pagina de logueo por ejemplo.

RedHat

es bueno saberlo :)

ya te digo que nunca he tocado asp xDD

_

Y0K3S3

#8

Es lo que tiene... Yo como soy de M$ pues me chupe asp,vb etc... y ahora la familia .NET xD

Usuarios habituales

  • Y0K3S3
  • RedHat
  • OsCuRiDaD