Hej
Söker efter ett redan färdigt script som visar vilka som är Online
Ungefär som här på webforum.
Är det någon som möjligen vet om det går att hitta det gratis någonstans?
Mvh Jimpa
27 svar · 917 visningar · startad av jimpa
Hej
Söker efter ett redan färdigt script som visar vilka som är Online
Ungefär som här på webforum.
Är det någon som möjligen vet om det går att hitta det gratis någonstans?
Mvh Jimpa
Du kan ju börja med att söka i detta forum.
Nope :)
Kan inte finna ett redan färdigt script som visar vilka som online i detta forum någon annan som vet?
Mvh Jimpa
Jag tror knappast du kommera tt hitta något färdigt script som passar just till din sida, det är ju trots allt rätt många faktorer som måste stämma.
Men en lösning är ju att spara ett datum i database varje gång användaren gör något, och sen på "vilka är online"-sidan plocka ut dem vars tid inträffade för mindre än ca. 15 minuter sen. Det är ju dock en kraftkrävande metod.
Du kan ha en kolumn i en databas som heter t.ex OnlineStatus.
Sen varje gång de loggar in uppdaterar du den till t.ex 'Ja'
Och när de loggar du uppdaterar du den igen till t.ex 'Nej'
Sen kollar du bara vilka som är online genom att skriva ut från databasen.
Sql = "Select * From Databaskolumn Where OnlineStatus = 'Ja'"
Jag hittade ett script Här
Men får det inte att fungera riktigt då inte namnet på den inloggade skrivs. Utan det registraras som "Gäst"
Kanske någon kan hjälpa mig att hitta felet
Den feta texten i koden har jag ändrat gentemot orginalet som du finner i länken ovan.
Börjar med global.asa
[FONT=courier new]
<Object Runat="Server" Scope="application" ID="dOnlineUsers" ProgID="Scripting.Dictionary"></Object>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
application("ServerStart") = now
end sub
[B]' Vad Betyder det Här !!!!!
function Decrypt(sText)
'Replace with your own decrypt ;)
Decrypt = sText
end function
function adZero(sText)
'Adds zeros to the beginning
if isNull(sText) then exit function
adZero = string(3 - len(sText), "0") & sText
end function
[/B]
Sub Session_OnStart
'Session_OnStart is automatically called by the ASP Interpreter
'when a new session starts. (Probably a new visitor)
'TimeOut value determines the period in minutes when
'the session is assumed to be abandoned
Session.TimeOut = 10
'Get the current active users list
sActiveUsersList = application("ActiveUsersList")
'Get the new user name from the cookie
'sNewUserName = Decrypt(request.cookies("devUserName"))
[B] 'Session MM_Username innehåller namnet på användaren
sNewUserName = Decrypt(Session("MM_Username"))[/B]
'If the visitor doesn't have a registered username, assign Guest(n) label
if sNewUserName = "" then sNewUserName = "Gäst-" & AdZero(CInt(application("Visitors")))
'Initial action time
sLastActionTime = Time
'User info consists of user name, last action time, and the page viewed
sUserInfo = sNewUserName & "<|>" & sLastActionTime & "<|>" & sLastPageViewed
'Add this user to our collection with SessionID being the key
'(See the top of this file to see how dOnlineUsers object is initiated)
dOnlineUsers.Add Session.SessionID, sUserInfo
'Lock the application variable and update the contents
application.lock
'The number of active users
application("ActiveUsers") = application("ActiveUsers") + 1
'The number of visitors since last application reset
application("Visitors") = application("Visitors") + 1
'If the date is different than the previously stored date,
'it means we passed midnight, so reset our "today" counters
if application("TodaysDate") <> Date() then
application("PageViewsToday") = 0
application("VisitorsToday") = 0
end if
application("VisitorsToday") = application("VisitorsToday") + 1
'Store the date
application("TodaysDate") = Date()
'Unlock and go
application.unlock
End Sub
Sub Session_OnEnd
'Session_OnEnd is automatically called by the ASP Interpreter
'when the specified TimeOut period has passed after user's last action
on error resume next
'Remove this session from our collection
dOnlineUsers.Remove Session.SessionID
'And update the application variables
application.lock
application("ActiveUsers") = application("ActiveUsers") - 1
application.unlock
End Sub
</SCRIPT>
[/FONT]
Sedan "onlineusers.asp" inkl. i alla ASP-sidor
<%
[B] Vad betyder detta!!!!!!
function Decrypt(sText)
'Replace with your own decrypt ;)
Decrypt = sText
end function
[/B]
application.lock
application("PageViews") = application("PageViews") + 1
if application("TodaysDate") <> Date() then
application("PageViewsToday") = 0
application("VisitorsToday") = 0
end if
application("PageViewsToday") = application("PageViewsToday") + 1
application("TodaysDate") = Date()
application.unlock
' if session("devUserName") = "" then
'session("devFullName") = Decrypt(request.cookies("devFullName"))
[B]'Session MM_Username innehåller namnet på användaren
session("devFullName") = Decrypt(Session("MM_Username"))
[/B]
end if
session("PageViewed2") = session("PageViewed1")
session("PageViewed1") = session("PageViewed0")
session("PageViewed0") = request.ServerVariables("script_name")
sUserInfo = dOnlineUsers.Item(Session.SessionID)
aUserInfo = split(sUserInfo, "<|>")
aUserInfo(1) = Time()
aUserInfo(2) = request.ServerVariables("script_name")
sUserInfo = aUserInfo(0) & "<|>" & aUserInfo(1) & "<|>" & aUserInfo(2)
dOnlineUsers.Item(Session.SessionID) = sUserInfo
%>
Till sist sidan som skriver ut "whoson.asp"
<p>
Who is Online
</p>
<%
on error resume next
response.write "<table cellpadding=""2"" cellspacing=""1"" border=""0"" width=""100%"">"
response.write "<tr><td></td><td><strong>Who</strong></td><td><strong>When</strong></td><td><strong>Where</strong></td></tr>"
aSessions = dOnlineUsers.Keys
for iUser = 0 to dOnlineUsers.Count - 1
sKey = aSessions(iUser)
sUserInfo = dOnlineUsers.Item(sKey)
aUserInfo = split(sUserInfo, "<|>")
sUserName = aUserInfo(0)
sLastActionTime = aUserInfo(1)
sLastPageViewed = aUserInfo(2)
if sUserInfo <> "" then
iUsrCount = iUsrCount + 1
response.write "<tr><td align=""right"">" & iUsrCount & ".</td><td> " & sUserName & "</td><td>" & sLastActionTime & "</td>"
response.write "<td>" & sLastPageViewed & "</td></tr>"
end if
next
response.write "</table>"
[B]
'Provar att skriva ut namnet Funkar
response.write Session("MM_Username") & "<BR>"
'Funkar inte
response.write sUserName
[/B]
%>
<br><br>
Mvh Jimpa
Decrypt är till för att manipulera med användarnamnet, vilket du inte behöver bry dig om.
adZero är som det låter AD Zero. Lägg till 0:a.
Lägger till 0:or innan numret på den anslutna användaren om denne ansluter som Gäst.
if session("devUserName") = "" then
session("devUserName") = Decrypt(request.cookies("devUserName"))
session("devFullName") = Decrypt(request.cookies("devFullName"))
end if
verkar finnas utan anledning så testa byta det till:
If Not Session("MM_Username") = "" then
NyttNick = Session("MM_Username")
Else
NyttNick = "Gäst"
End If
och efter det, byt
sUserInfo = aUserInfo(0) & "<|>" & aUserInfo(1) & "<|>" & aUserInfo(2)
i onlineusers.asp till
sUserInfo = NyttNick & "<|>" & aUserInfo(1) & "<|>" & aUserInfo(2)
I Global.asa kan raden
sNewUserName = Decrypt(Session("MM_Username"))
ersättas med:
sNewUserName = "Gäst"
eftersom sessionen MM_Username antagligen inte är definierad precis när man går in på sidan.
Det fungerar för mig iaf.
UnConed skrev:
Du kan ha en kolumn i en databas som heter t.ex OnlineStatus.
Sen varje gång de loggar in uppdaterar du den till t.ex 'Ja'
Och när de loggar du uppdaterar du den igen till t.ex 'Nej'
Sen kollar du bara vilka som är online genom att skriva ut från databasen.
Sql = "Select * From Databaskolumn Where OnlineStatus = 'Ja'"
Det kommer inte riktigt att fungera eftersom alla inte loggar ur helt utan bara stänger ner webläsaren. Därför är det bättre att ha t.ex. en OnlineStatus-kolumn och uppdatera den varje gång användare laddar en ny sida. Sedan kontrollera vilka som gjorde något på sidan för ca 10 min sedan.
Som sagt, den kräver mycket. Men så länge användare bara stänger webläsaren (istället för att trycka på någon "logga ut"-länk först) så är det det bästa sättet att lösa det på.
Om du använder en application-variabel istället för db så slipper du prata så mycket med databasen, vilket ger bättre prestanda !
Det är det scriptet gör som vi snackar om längre upp...
Jag har testat den här koden.
Får hela tiden felmeddelandet.
Körningsfel i Microsoft VBScript error '800a01a8'
Objekt krävs.: 'dOnlineUsers'
/_onlineusers.asp, line 26
Har du fixat det du ska i global.asa och stödjer ditt webhotell denna fil?
Ja det gör det jag kopierade först hela jimpas kod, bytte ut till det du sa.
Men får det där felet.
Nu tog jag koden direkt från länken jimpa angav.
Funkar lika dåligt.
det är den här raden jag får fel på.
sUserInfo = dOnlineUsers.Item(Session.SessionID)
i _onlineusers.asp
Är väldigt ovan såna här script.
Håller mest på med databaser.
Jag får också:
Objekt krävs.: ''
på denna rad:
sUserInfo = dOnlineUsers.Item(Session.SessionID)
Vad kan det bero på?
Det verkar som om ni har problem med global.asa.
Läses filen rätt och har ni pillat in rätt kod i filen?
dOnlineUsers initieras i global.asa...
Jag har lagt global.asa i wwwroot:en. Så här ser den ut:
Global.asa:
<Object Runat="Server" Scope="application" ID="dOnlineUsers" ProgID="Scripting.Dictionary"></Object>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
application("ServerStart") = now
end sub
function Decrypt(sText)
'Replace with your own decrypt ;)
Decrypt = sText
end function
function adZero(sText)
'Adds zeros to the beginning
if isNull(sText) then exit function
adZero = string(5 - len(sText), "0") & sText
end function
Sub Session_OnStart
'Session_OnStart is automatically called by the ASP Interpreter
'when a new session starts. (Probably a new visitor)
'TimeOut value determines the period in minutes when
'the session is assumed to be abandoned
Session.TimeOut = 20
'Get the current active users list
sActiveUsersList = application("ActiveUsersList")
'Get the new user name from the cookie
sNewUserName = "Gäst"
'If the visitor doesn't have a registered username, assign Guest(n) label
if sNewUserName = "" then sNewUserName = "Guest-" & AdZero(CInt(application("Visitors")))
'Initial action time
sLastActionTime = Time
'User info consists of user name, last action time, and the page viewed
sUserInfo = sNewUserName & "<|>" & sLastActionTime & "<|>" & sLastPageViewed
'Add this user to our collection with SessionID being the key
'(See the top of this file to see how dOnlineUsers object is initiated)
dOnlineUsers.Add Session.SessionID, sUserInfo
'Lock the application variable and update the contents
application.lock
'The number of active users
application("ActiveUsers") = application("ActiveUsers") + 1
'The number of visitors since last application reset
application("Visitors") = application("Visitors") + 1
'If the date is different than the previously stored date,
'it means we passed midnight, so reset our "today" counters
if application("TodaysDate") <> Date() then
application("PageViewsToday") = 0
application("VisitorsToday") = 0
end if
application("VisitorsToday") = application("VisitorsToday") + 1
'Store the date
application("TodaysDate") = Date()
'Unlock and go
application.unlock
End Sub
Sub Session_OnEnd
'Session_OnEnd is automatically called by the ASP Interpreter
'when the specified TimeOut period has passed after user's last action
on error resume next
'Remove this session from our collection
dOnlineUsers.Remove Session.SessionID
'And update the application variables
application.lock
application("ActiveUsers") = application("ActiveUsers") - 1
application.unlock
End Sub
</SCRIPT>
Så här ser koden ut som inkluderas på varje sida:
application.lock
application("PageViews") = application("PageViews") + 1
if application("TodaysDate") <> Date() then
application("PageViewsToday") = 0
application("VisitorsToday") = 0
end if
application("PageViewsToday") = application("PageViewsToday") + 1
application("TodaysDate") = Date()
application.unlock
If Not Session("username") = "" then
NyttNick = Session("username")
Else
NyttNick = "Gäst"
End If
session("PageViewed2") = session("PageViewed1")
session("PageViewed1") = session("PageViewed0")
session("PageViewed0") = request.ServerVariables("script_name")
sUserInfo = dOnlineUsers.Item(Session.SessionID)
aUserInfo = split(sUserInfo, "<|>")
aUserInfo(1) = Time()
aUserInfo(2) = request.ServerVariables("script_name")
sUserInfo = NyttNick & "<|>" & aUserInfo(1) & "<|>" & aUserInfo(2)
dOnlineUsers.Item(Session.SessionID) = sUserInfo
Jag kan inte se någon feländring jag har gjort, kan ni det?
Sidan där jag skriver ut användarna behöver jag ju inte visa för den orsakar knappast felet. För övrigt funkar den sidan bra.
Ni kör vanliga MS ASP va? Inte chillisoft eller liknande?
Har ni gjort exakt som jag längre upp så borde det ju fungera.. *hmm*