Qualcuno conosce un modo per conteggiare gli utenti online (non iscritti) senza far uso del global.asa? Ve ne sarei molto grato.
![]()
Qualcuno conosce un modo per conteggiare gli utenti online (non iscritti) senza far uso del global.asa? Ve ne sarei molto grato.
![]()
data la domanda giunta casualmente alla mia vista do la mia risposta![]()
il meccanismo è moooolto semplice
nel database di profilazione si hanno due campi in più
| USER_LOGIN | USER_LASTACTION |
quando un utente si autentica (indi ad OGNI pagina aperta) si controlla l'ora attuale con quella in USER_LASTACTION.
se la differenza è maggiore di X (io uso 5 minuti) allora si scrive la data attuale in USER_LOGIN e in USER_LASTACTION
se la differenza è minore di X si scrive la data attuale in USER_LASTACTION
----
per controllare se un utente è online si controlla la differenza fra la data attuale e USER_LASTACTION, se la differenza è minore di X l'utente è online (fare una funzioncina è roba da tre secondi)
inoltre si può sapere da quanto tempo è online (se è online secondo il criterio appena enunciato) facendo la differenza fra data attuale e USER_LOGIN
---
se servono funzioni già scritte più o meno ho tutto
ma far pratica fa semrpe bene![]()
Però mi pare di capire (spero di non sbagliarmi) che così l'utente si deve autenticare:
"... nel database di profilazione si hanno due campi in più
| USER_LOGIN | USER_LASTACTION |
quando un utente si autentica ..."
A me invece serve contare tutti gli utenti, anche i non registrati e quindi non autenticati, cioè anche il normalissimo visitatore casuale.
Scusami se ho capito male
![]()
per quelli ho una tabella parallela di guest che vengono riconosciuti tramite un codice univoco generato (puoi benissimo usare il sessionid) scritto nel db e nei cookie...
anche in questo caso vale la regola del login e dell'ultima azione.
quando viene visualizzata la lista degli utenti online tutti i guest non connessi (ultima azione più "vecchia" di X minuti dalla data attuale) vengono eliminati dalla tabella
OK! Ora ci provo e nel caso non dovessi riuscirci mi rivolgerò ancora a ... San imente.
Per il momento ti ringrazio, sei sempre gentilissimo.
![]()
ecco li...Originariamente inviato da michele.santoro
San imente.![]()
alla fine doveva succedere anche a me
a furia di santo kluster mi hanno fatto santo pure a me :maLOL:
Originariamente inviato da imente
ecco li...
alla fine doveva succedere anche a me
a furia di santo kluster mi hanno fatto santo pure a me :maLOL:
eh eh eh io di santo ho solo il nome![]()
![]()
Imente, forse intendeva san ODi mente ?Originariamente inviato da michele.santoro
OK! Ora ci provo e nel caso non dovessi riuscirci mi rivolgerò ancora a ... San imente.
Per il momento ti ringrazio, sei sempre gentilissimo.
![]()
eheheh![]()
ciauz!!!!
ciao, scusate se mi intrometto, ma anch'io ho lo stesso problema, cioè per via di malfunzionamenti del file global.asa (il sito risiede su register) sono costretto ad usare un DB d'appoggio.
ho parzialmente risolto la cosa, ma il problema rimane cancellare i nomi di quelli che abbandonano la sessione.
potresti gentilemente illustrare meglio il procedimento che hai adottato imente?![]()
io ho fatto una cosa del genere, ma appunto mi trovo allo scoglio finale che non riesco a superare:
file global.asa (in rosso la parte che dovrebbe eliminare l'utente con la sessione scaduta, ma non va...)
<SCRIPT language="VBScript" Runat="Server">
Sub Application_OnStart
'*** Connessione DB SQL Sever in rete ****
Dim connDB, Dbfile
SET connDB = Server.CreateObject("ADODB.Connection")
Dbfile = "Provider=SQLOLEDB;Data Source=XXX;uid=XXX;Password=XXX;database=XXX"
connDB.Open Dbfile
End Sub
Sub Session_OnEnd
query_users = "SELECT users FROM users_online WHERE id_users_online =1"
set users = server.createobject("adodb.recordset")
users.open query_users, connDB, 1, 1
Application.Lock
if (Session("utente") & "") <> "" then
query_users = "UPDATE users_online SET users = '" & Replace( users("Users") ,"|" & Session("utente") & "|" ,"") & "' WHERE id_users_online =1"
connDB.Execute(query_users)
end if 'quando scade una sessione viene eliminato il nome dell'utente dalla variabile di
'applicazione che contiene l'elenco degli utenti attivi
Application.UnLock
End Sub
</SCRIPT>
poi ho creato una semplice tabella con ID_USER_ONLINE e un campo USER_ONLINE che racchiude la stringa degli utenti separati dal |
parte della pagina col login (questa funziona correttamente)
Session("utente") = statuscookie("username")
query_users = "SELECT users FROM users_online WHERE id_users_online =1"
set users = server.createobject("adodb.recordset")
users.open query_users, connDB, 1, 1
if not users.BOF and not users.EOF then
if InStr(1, users("Users"),"|" & statuscookie("username") & "|" ) = 0 then
'se l'utente non è già presente
Application.Lock
'viene aggiunto l'utente appena loggato alla stringa che contiene
' l'elenco degli utenti
query_users = "UPDATE users_online SET users = '" & users("Users") & "|" & statuscookie("username") & "|" & "' WHERE id_users_online =1"
connDB.Execute(query_users)
Application.UnLock
end if
end if
accetto qualsiasi consiglio, grazie![]()
come fai a capire da quanto è online se ogni 5 minuti e 1 secondo aggiorni il campo user_login?Originariamente inviato da imente
inoltre si può sapere da quanto tempo è online (se è online secondo il criterio appena enunciato) facendo la differenza fra data attuale e USER_LOGIN