Ver Mensaje Individual
  #9 (permalink)  
Antiguo 25/05/2003, 11:04
Avatar de Fr@Nc3$c0
Fr@Nc3$c0
 
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Hola a todos los interesados de este tema

Por fín tengo algo de tiempo para hacerlo y hecho está, es simple pero funciona, he estado mejorando el código para que sea lo más breve posible.

Trata de utilizar el global.asa:

En el Session_OnStart():
' ########## Usuuarios On-line #######
Session("galleta") = Request.Cookies("Usuario")
If Session("galleta") = "" then Session("galleta") = "Invitad@"
Set Conn = Server.Createobject("ADODB.Connection")
Conn.Open Application("ConnContadores")
Set RS = Conn.Execute(" SELECT * FROM online WHERE usuario = '"&Session("galleta")&"' ")
If RS.BOF AND RS.EOF then
Conn.Execute(" INSERT INTO online(usuario, simultaneo) VALUES('"&Session("galleta")&"', 1) ")
Else
Conn.Execute(" UPDATE online SET simultaneo = '" &RS("Simultaneo") + 1& "' WHERE usuario = '"&Session("galleta")&"' ")
End If
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
' ############ Fín Usuuarios On-line ##########


Y en el Session_OnEnd():

' ######## Usuarios On-line ##########
Set Conn = Server.Createobject("ADODB.Connection")
Conn.Open Application("ConnContadores")
Set RS = Conn.Execute(" SELECT * FROM online WHERE usuario = '"&Session("galleta")&"' ")
If RS("Simultaneo") <= 0 then
Conn.Execute("DELETE * FROM online WHERE usuario = '"&Session("galleta")&"' ")
Else
Conn.Execute(" UPDATE online SET simultaneo = '"&RS("Simultaneo") - 1&"' WHERE usuario = '"&Session("galleta")&"' ")
End If
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
' ######## Fín Usuarios On-line #############


Bien, necesitaréis una Tabla en vuestra BD llamada Online con las filas : Usuario y Simultaneo.

Lo he hecho pensando en la posibilidad de que un usuario entre varias veces al mismo tiempo, puede darse el caso, así tenerlo en cuenta hasta que se marche realmente.

El Session.Timeout corre a cuenta de cada uno, puesto que de eso depende que le reste el usuario on.line, porque es desde la ultima accion del usuario desde que empieza a contar.

A partir de este codigo que os expongo se pueden hacer más cosas, pero esta creo yo es una buena base.

Espero haber sido de ayuda, saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...