Grazie zerointeractive
come giustamente ha risposto sopra Roby_72 c'è gia un ottimo post di 9 pagine che tratta
la creazione di una lista di utenti On Line usando session e appliation, da quel post sono riuscito a fare grossi passi avanti adattando e rileggendo tutti i passi che loro hanno scritto,
anche se quello che devo fare io è in parte simile all'argomento risolto da loro.
Onestamente non ho ancora risolto del tutto, perchè nel post di cui dicevo prima, si usa il global.asa per aggiornare le uscite e le entrate dal sito, mentre io non intendo utilizzarlo.
Nel mio caso, invece devo mostrare gli utenti connessi escusivamente su una sola pagina, per questo motivo non mi funziona ancora a dovere.
Attualmente sto lavorando su due pagine chat.asp dove aggiorno una Application all'ingresso in chat.
Codice PHP:
if Session("MiaPagina")<>"OK" then
application.lock
Application("utentionline") = Application("utentionline") & Session("utente") & "#^#" & session("orario") & "|"
application.unlock
End If
session("MiaPagina")= "OK"
'//VISUOLIZZA UTENTI IN CHAT
arrUtenti = Split(Application("utentionline"),"|")
for i = 0 to UBound(arrUtenti)-1
arrUser_ID = split (arrUtenti(i), "#^#")
user = arrUser_ID(0)
id = arrUser_ID(1)
if i <> UBound(arrUtenti)-1 then
response.write "[url=""]"& user &" - " & id & " ,[/url] "
else
response.write "[url=""]"& user &" - " & id & "[/url]"
end if
arrUser_ID = null
Next
Quando l'utente esce dalla chat passando in una qualsiasi pagine del sito che non sia chat.asp, incombe in un paio di condizioni che richiamano una funzione che dovrebbe cancellare ed aggiornale l'Application eliminando i nomi che non servono.
CancellaUtentiChat()
Codice PHP:
Function CancellaUtentiChat()
Dim vecchio
' Application.Contents.Remove("utentionline")
'/ rimuovo la sessione utente e aggiorno Application
vecchio = ""
' application.lock
' if instr(application("utentionline"), "|") > 0 then
' vecchio = Session("utente") & "#^#" & session("orario") & "|"
' else
' vecchio = Session("utente") & "#^#" & session("orario")
' End if
' Application("utentionline") = replace(Application("utentionline"), vecchio, "")
arrUtenti = Split(Application("utentionline"),"|")
for i = 0 to UBound(arrUtenti)-1
arrUser_ID = split (arrUtenti(i), "#^#")
user = arrUser_ID(0)
id = arrUser_ID(1)
if i <> UBound(arrUtenti)-1 then
if arrUtenti(i) <> Session("utente") then
nuovoArrayUtenti = nuovoArrayUtenti & " " & arrUtenti(i)
End If
end if
arrUser_ID = null
Next
' application.lock
application("utentionline") = nuovoArrayUtenti & "|"
' application.lock
' Application("utentionline") = replace(Application("utentionline"), nuovoArrayUtenti, "")
Response.write nuovoArrayUtenti
'/ rimuovo la sessione creata nella pagina
on error resume next
Session.Contents.remove("MiaPagina")
If Err <> 0 Then
Err.Clear
Session("MiaPagina") = ""
End If
' on error resume next
' Session.Contents.remove("utente")
' If Err <> 0 Then
' Err.Clear
' Session("utente") = ""
' End If
on error resume next
Session.Contents.remove("orario")
If Err <> 0 Then
Err.Clear
Session("orario") = ""
End If
End Function
In pratica il sistema di aggiornamento Application e cancellazione non usano il global.asa,
non avendo trovato nulla nel forum, ho pensato di aprire questa discussione.
Grazie a zerointeractive stasera avrò da provare il suo array, spero di risolvere, il codice della funzione per aggiornare la application e cancellare le sessioni è stracommentato perchè l'ho postato allo stato attuale della mia situazione.