Hola a todos los usuarios de los foros nuevamente:
Durante esta semana estoy intentando arreglar un pequeño problema que me persiste por más que intento arreglarlo.
Ha sido el hecho de colocar un contador de visitar con BD en global.asa, lo cual tendría que funcionar correctamente, pero en vez de ser así funciona únicamente con ciertos usuarios.
A continuación expongo el contenido de mi global.asa:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<SCRIPT language="VBScript" Runat="server">
Sub Application_OnStart()
'#### Activo libreria ActiveX para utilizar RecordSet en la web
<!-- METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}" -->
'#### Establezco la conexión con la BD para utilizarla en la web
Application("ConexContadores") = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("mdb-database/Contadores.mdb")
Application("ConexUsuarios") = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("mdb-database/Usuarios.mdb")
'#### Inicio Contador Usuarios Activos
Application("ActiveUsers") = 0
End SUB
Sub Application_OnEnd()
End SUB
Sub Session_OnStart() ' SENTENCIAS QUE SE EJECUTAN CADA VEZ QUE ENTRA UN USUARIO
'#### Formato de hora en España
Session.LcID = 1034
'#### Guardamos las visitas en la BD si no soy yo
Dim Connection, Casa, IP, Software, Procedencia, Lenguaje, URL, Fecha, Hora
Casa = "62.57.43.1"
IP = Request.ServerVariables("REMOTE_ADDR")
Software = Request.ServerVariables("HTTP_USER_AGENT")
Procedencia = Request.ServerVariables("HTTP_REFERER")
Lenguaje = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")
URL = Request.ServerVariables("URL")
Fecha = date()
Hora = time()
If IP <> Casa then
Set Connection=Server.Createobject("ADODB.Connection")
Connection.Open Application("ConexContadores")
Connection.Execute("INSERT INTO visitantes(Ip, Software, Procedencia, Lenguaje, URL, Fecha, Hora) Values ('"&IP&"', '"&Software&"', '"&Procedencia&"', '"&Lenguaje&"', '"&URL&"', '"&Fecha&"', '"&Hora&"') ")
Connection.Close
Set Connection = nothing
End If
'#### Añadimos un Usuario Activo al contador
Application.Lock()
Application("ActiveUsers") = Application("ActiveUsers") + 1
Application.UnLock()
'#### Tiempo en minutos para la expiración de la session
Session.Timeout = 10
End SUB
Sub Session_OnEnd() ' SENTENCIAS A EJECUTAR AL IRSE UN USUARIO
'#### Eliminamos un Usuario Activo del contador
Application.Lock()
Application("ActiveUsers") = Application("ActiveUsers") - 1
Application.UnLock()
End Sub
</SCRIPT>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Si quieres comprobar que no pueden entrar ( o algunos lo harán) pueden hacerlo en mi página de prueba.
www.impresionweb.com
Tengo la base de datos "CONTADORES" con una única tabla y con un campo autonumérico que indica las visitas.
Lo raro que hay son unas observaciones que por medio de unos amigos he llegado a conclusión:
- Cada vez que consigue entrar un usuario, todo correcto para éste, entra suma la visita...etc.
- Cada vez que NO consigue entrar un usuario, le da un error de no se encuentra la pagina o error interno del servidor. ES ENTONCES, cuando observo que el próximo usuario que consigue entrar no tiene un numero de visita precesor, sino un numero más del que debería (saltándose un número o los que hayan sido) según usuarios no han podido entrar en la web.
Menuda bola ¿no?
Espero sin embargo que sea una tonteria.
Gracias por soportar este mensaje.