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

Problema "Usuarios Online"

Estas en el tema de Problema "Usuarios Online" en el foro de ASP Clásico en Foros del Web. Tengo montado un sistema, basado en GLOBAL.asa en el que cada vez que alguien entra en la web (si ya esta registrado) lo muestre por ...
  #1 (permalink)  
Antiguo 19/05/2003, 15:16
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 6 meses
Puntos: 0
Problema "Usuarios Online"

Tengo montado un sistema, basado en GLOBAL.asa en el que cada vez que alguien entra en la web (si ya esta registrado) lo muestre por pantalla. El codigo para mostrarlo no lo pongo, por que creo que hay no hay ningun problema, y me da que el problema esta aqui:
Código:
Sub Session_OnStart 
Session("usrName") = Request.Cookies("User")("Name")

Application.lock 
  Application("online")=application("online")+1 

   If session("usrName") <> "" Then
    If application("online") = 0 Then
     application("somos") = application("somos") &  session("usrName")
    Else 
     application("somos") = " - " &  application("somos") &  session("usrName") & " - "
    End If
   Else
     application("anonim") = application("anonim") + 1
   End If
  Application.unlock 
End Sub
Cuando veo como han quedado los resultados (imprimiendo en pantalla la variable application("somos") ) entonces veo que si, hay 2 usuarios online, queda asi:
- - - usuario1 - usuario2
Si hay 3,
- - - - usuario1 - usuario2 - usaurio3

¿Donde puede estar el fallo? ¿Como puedo optimizar este codigo? Gracias

¿Como puedo hacer luego para sacar el numero de Usuarios Online?

Se me ha ocurrido que a lo mejor era mejor si la variable la cambiaba en vez del nombre por la ID unica de cada usuario, pero... ¿Como recorro la variable para quedarme solo con cada ID=?
__________________
Tu portal de manga y anime.
  #2 (permalink)  
Antiguo 20/05/2003, 06:33
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 2 meses
Puntos: 1
No es por incordiar, creo recordar por experiencia propia que no se puede capturar la cookie en el global.asa, es un commando restringido.

Saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #3 (permalink)  
Antiguo 20/05/2003, 07:30
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 6 meses
Puntos: 1
aca hay algo parecido
http://www.2enetworx.com/dev/samples/memwhoson.asp

y levanta una cookie
__________________
On error no hago nada porque deje de fumar...
  #4 (permalink)  
Antiguo 20/05/2003, 07:33
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 2 meses
Puntos: 1
Ok, estudiaré eso y os cuento.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #5 (permalink)  
Antiguo 22/05/2003, 12:36
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 6 meses
Puntos: 0
Por cierto... ¿se puede evitar que te ponga User-000 y que ponga un nombre de usuario ya registrado?
__________________
Tu portal de manga y anime.
  #6 (permalink)  
Antiguo 22/05/2003, 15:45
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 2 meses
Puntos: 1
Eso donde te lo pone?

Yo estoy trabajando en un sistema independiente del que mencionó nuestro amigo con un link inglés.

El que utilizao yo guardo los usuarios online en la Base de datos, e intentaré hacer estadísticas .

Cuando lo termine te lo paso si quieres en un Mensaje Privado o si cabe lo expongo, etc.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #7 (permalink)  
Antiguo 22/05/2003, 15:47
Avatar de affv  
Fecha de Ingreso: diciembre-2002
Ubicación: Ahora aqui
Mensajes: 485
Antigüedad: 21 años, 6 meses
Puntos: 0
Fr@Nc3$c0 me harias el favor de enviarmelo a mi tambien..
__________________
Todo tiene un comienzo y un fin!!
Postea tus proyectos
  #8 (permalink)  
Antiguo 23/05/2003, 08:22
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 6 meses
Puntos: 0
Ok. Pasamelo a traves de un mensaje privado, si puedes claro, o lo expones aqui.

Ambas son buenas ideas.

Gracias por compartir tu trabajo con nosotros !!
__________________
Tu portal de manga y anime.
  #9 (permalink)  
Antiguo 25/05/2003, 11:04
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 2 meses
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...
  #10 (permalink)  
Antiguo 27/05/2003, 15:04
 
Fecha de Ingreso: junio-2002
Ubicación: Rosario
Mensajes: 230
Antigüedad: 22 años
Puntos: 0
que valor tendria:
Application("ConnContadores")
???

gracias
__________________
www.enricodev.com.ar
web applications development studio

-- You can be anything you want to be.--
  #11 (permalink)  
Antiguo 27/05/2003, 15:24
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 2 meses
Puntos: 1
Eso es mi conexión, ahí deberías colocar tus drivers de conexión a la base de datos.

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("BASEDEDATOS.mdb")


Saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
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 00:26.