Newsgroup: it.comp.www.asp
Titolo: utenti on-line senza global.asa

Ciao, questo sotto è uno script per il conteggio degli utenti online senza
l'ausilio del file global.asa. Premetto che non l'ho scritto io, non ne
sarei capace, ma comunque mi sembra molto valido.
La mia domanda è questa. E' possibile modificarlo in qualche parte in modo
tale che con i rispettivi campi in un DB, lui oltre a contare semplicemente
le sessioni aperte, mi dica anche quale utente l'ha aperta.
Vorrei vedere praticamente quale utente è on line è quale no....ovviamente
parlo della mia piccola intranet (max sono 10 persone) e se vi può essere
utile ho creato una variabile di sessione che si attiva quando il log-in
dell'utente va a buon fine. Questa si chiama:
<% Session("userID") = rsLogin.Fields.Item("userID").Value %>
Se si riuscisse ad implementare la cosa mi esalterebbe....  : ).
Ovviamente lo accluderei come file include in tutte le pagine della
intranet...così capisco quando uno stacca....
Grazie a tutti Alen.
___________________________________________________________________
<%
sessionID = session.SessionID
timeout = 5
' set how long to keep this session in minute you can increase this number
Conn_String = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
Server.MapPath("count.mdb")
'Conn_String = "activeUser"
'set your DSN = "activeuser" is a better way because you need include this
file to all your asp scripts.
Set ConnCount =Server.CreateObject("ADODB.Connection")
ConnCount.Open Conn_String
' delete session after timeout
aaa = dateadd("n", -timeout, now())
connCount.Execute ("delete * from count where postdate < #" & aaa & "#")
' keep sessionID
sql0 = "select sess from count where sess='" & sessionID & "'"
set rscheck = connCount.Execute (sql0)
if rscheck.eof then
sql = "insert into count (sess,postdate) values('" & sessionID & "', '" &
now() & "')"
connCount.Execute (sql)
end if
rscheck.close
set rscheck = nothing
'count sessionID
sql2 = "select count(sess) from count"
set rs = connCount.Execute (sql2)
count = rs(0)
rs.close
set rs = nothing
sql3 = "select * from count"
set rspredel = connCount.Execute (sql3)
do until rspredel.eof
xxx=DateDiff("n", rspredel("postdate"), Now())
if xxx > timeout then
count = count-1
end if
rspredel.movenext
loop
rspredel.close
set rspredel = nothing
connCount.Close
set connCount = nothing
if count = 0 then
count = 1
end if
%>
<%=count%> Active users

> Vorrei vedere praticamente quale utente è on line è quale no....
Visto che agli utenti fai fare il login, nessuno ti vieta di inserire nel
db, oltre al sessionid, anche il nickname, che recuperi dall'archivio degli
utenti.
--
Filippo Di Blasi 
fil...@puntoinformatico.it
http://puntoinformatico.it
 <-- E-shop informatico
http://puntoinformatico.it/usato
 <-- Usato
http://puntoinformatico.it/servizi
 <-- Servizi web

<% Session("userID") = rsLogin.Fields.Item("userID").Value %>
Ciao,
nel mio sito ho realizzato una cosa simile. La tabella utenti contiene (per
semplicità) il nome utente (login) e la data/ora di accesso (accesso).
Nella pagina di autenticazione dove metti nella variabile Session l'ID
dell'utente puoi aggiornargli il campo accesso con la data/ora attuali.
Successivamente nella pagina nella quale vuoi visualizzare gli utenti on-line
fai una select che ti estragga tutti le persone che hanno nel campo accesso una
data/ora minore per esempio di 1 minuto dalla data/ora attuale.
Per fare in modo che l'utente aggiorni il suo campo puoi mettere nel tuo sito un
frame nascosto che si occupa di fare solo l'upload. Questa pagina fai in modo
che si ricarichi ogni 58 secondi.
Questa è la teoria. Se hai bisogno del codice posso inviartelo per email.
A presto,
Corrado Paoletti
www.motepassa.it
Como - Italy
---
prima di ogni domanda...
www.deja.com
msdn.microsoft.com

 Questa č la teoria. Se hai bisogno del codice posso inviartelo per email.


Io ho risolto con una Variabile APPLICATION dove inserisco nome utente ed
ora di accesso
ogni volta che qualcuno ricarica la pagina del sito ho un piccolo script che
controlla da quanto tempo sono collegati gli utenti, e se superano X secondi
le cancella...
qua riporto una cosa velocissima, da finire di controllare.. non ho ora con
me il sorgente del sito.. questa è la vecchia versione:
<%
 minuti = 30
 MaxTime = 60 * minuti
 if trim(Application("online"))="" then
  Application("online") = ""
 end if
 totpers=0
 if instr(session("nick"),"@")=0 then
  Application.Lock()
  online = Application("online")
  stringa_utente = split(online,("$"))
  if ubound(stringa_utente)<0 then
   redim stringa_utente(0)
   stringa_utente(0) = session("nick") & "@" & time()
  end if
  cisono = false
  for i=0 to ubound(stringa_utente)
   aux = split(stringa_utente(i),"@")
   if (aux(0)=session("nick")) then
    stringa_utente(i) = session("nick") & "@" & Time()
    cisono = true
   else
    delta = datediff("s",aux(1),Time())
    if (delta>MaxTime) then stringa_utente(i) = ""
    if (delta<0) then stringa_utente(i) = ""
    if aux(0)="" then stringa_utente(i) = ""
   end if
   if stringa_utente(i)<>"" then
    totpers=totpers+1
   end if
  next
  if (cisono=false) then
   redim preserve stringa_utente(ubound(stringa_utente)+1)
   stringa_utente(ubound(stringa_utente)) = session("nick") & "@" & time()
  end if
  online = ""
  for i=0 to ubound(stringa_utente)
   if trim(stringa_utente(i))<>"" then
    if trim(online)<>"" then online = online & "$"
    online = online & stringa_utente(i)
   end if
  next
  Application("online") = online
  Application.UnLock()
 end if
%>