Loopar ut folk i en application men vissa snubbar kommer upp flera ggr. om man har otur. Går det att förbjuda loopen att visa samma användarnamn(unikt) två ggr. och i sådana fall, hur?!
MVH Jesper
9 svar · 275 visningar · startad av Jesper T
Loopar ut folk i en application men vissa snubbar kommer upp flera ggr. om man har otur. Går det att förbjuda loopen att visa samma användarnamn(unikt) två ggr. och i sådana fall, hur?!
MVH Jesper
kommer här...
if strFirst = "" then
strFirst = "A"
end if
if show = "all" then
strSQL = "SELECT * FROM users ORDER BY surname,firstname,city"
else
Dim strSQL
strSQL = "SELECT * FROM users WHERE surname LIKE '" &_
strFirst & "%'" & "ORDER BY surname,firstname,city"
end if
Set rsUsers = Server.CreateObject("ADODB.Recordset")
rsUsers.Open strSQL, conn, 3, 3
If rsUsers.EOF then
Response.Write "<font size=2>Användare online saknas vars efternamn börjar med "&_
UCase(strFirst)
Else
Response.Write"<font size=2>Användare online"
Do While Not rsUsers.EOF
user_array=split(Application("active_users"),"*")
for t=0 to ubound(user_array)
user=user_array(t)
If rsUsers("Username") = user Then
count = count + 1
Något sådant har jag nu!
Listar tex Olle nitton ggr. om killen inte har loggat ut mellan inloggningarna.
MVH Jesper
Då borde du väl se till så att du inte lagrar samma namn flera gånger i din applikationsvariabel.
Ok hur gör jag det?
Detta har jag i min global.asa:
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
' Set our user count to 0 when we start the server
Application("ActiveUsers") = 0
Application("active_users")=""
End Sub
Sub Session_OnStart
Session("Usname")=""
' Change Session Timeout to 20 minutes (if you need to)
Session.Timeout = 30
' Set a Session Start Time
' This is only important to assure we start a session
Session("Start") = Now
' Increase the active visitors count when we start the session
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") + 1
Application.UnLock
End Sub
Sub Session_OnEnd
' Decrease the active visitors count when the session ends.
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") - 1
Application.UnLock
un=Session("Usname")
if un<>"" and Application("active_users")<>"" then
tmp=Application("active_users")
idx=instr(tmp,un & "*")
tmp2=left(tmp,idx-1) & right(tmp,len(tmp)-idx-len(un))
Application("active_users")=tmp2
end if
End Sub
</SCRIPT>
Och detta i min loginsida:
<%
username = Request.Form("username")
password = Request.Form("password")
stayloggedin = Request.Form("stayloggedin")
lastlogg = Request.Form("lastlogg")
%>
<!--#include virtual="/conn.asp"-->
<%
sql = "SELECT username,klass,kontokort,firstname,lastlogg FROM users WHERE StrCOMP(username,'" & username & "',0) = 0 AND strcomp(password,'" & password & "', 0) = 0"
Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.Open sql, conn, 3, 3
If (not rsUser.BOF) and (not rsUser.EOF) then
Response.Cookies("username") = rsUser("username")
Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open "users WHERE username = '" & username & "'", conn, 3, 3
rsUser.Update
rsUser("lastlogg") = lastlogg
rsUser("visit") = rsUser("visit") + 1
rsUser.Update
if cstr(stayloggedin) = "true" then
Response.cookies("auto") = rsUser("username")
Response.cookies("auto").expires = DateAdd("d",365,Now())
Response.cookies("auto2") = rsUser("password")
Response.cookies("auto2").expires = DateAdd("d",365,Now())
end if
uname=rsUser("Username")
Session("Usname")=uname
[b]Application("active_users")=Application("active_users") & uname & "*" [/b]
rsUser.close
set rsUser = nothing
conn.close
set conn = nothing
Response.Redirect(page)
end if
rsUser.close
set rsUser = nothing
conn.close
set conn = nothing
response.cookies("loginErr") = "Fel på användarnamn eller lösenord!<br>Har du glömt ditt lösenord, klicka på "Glömt mitt lösen" ."
response.redirect("index.asp")
%>
MVH Jesper T
Hur blir man då utloggad?
Så här:
<%
Response.Cookies("username") = ""
un=Session("Usname")
if un<>"" and Application("active_users")<>"" then
tmp=Application("active_users")
idx=instr(tmp,un & "*")
tmp2=left(tmp,idx-1) & right(tmp,len(tmp)-idx-len(un))
Application("active_users")=tmp2
end if
Session.Abandon
Response.Redirect("logout.asp")
%>
För att förhindra att du stoppar in samma användare flera gånger så kan du göra
application.lock
if instr("*" & Application("active_users"), "*" & uname & "*") = 0 then
Application("active_users")=Application("active_users") & uname & "*"
end if
application.unlock
På loginsidan eller i global.asa? Äh.. Det verkar funka att lägga den på loginsidan!
Tack ;)
Jesper