webForumDet fria alternativet

Loop minus några för mycket

ASP

9 svar · 275 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

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

Medlem sedan juni 200032 967 inlägg
#2

Jo, det går säkerligen. Men utan kod, ingen hjälp. ;)

Mvh,

Medlem sedan nov. 20017 144 inlägg
#3

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

Medlem sedan dec. 200012 464 inlägg
#4

Då borde du väl se till så att du inte lagrar samma namn flera gånger i din applikationsvariabel.

Medlem sedan nov. 20017 144 inlägg
#5

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å &quot;Glömt mitt lösen&quot; ."
response.redirect("index.asp")
%>

MVH Jesper T

Medlem sedan mars 20015 287 inlägg
#6

Hur blir man då utloggad?

Medlem sedan nov. 20017 144 inlägg
#7

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")
%>
Medlem sedan nov. 20017 144 inlägg
#8

Det var så här min kod såg ut ja...

:)

Medlem sedan dec. 200012 464 inlägg
#9

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
Medlem sedan nov. 20017 144 inlägg
#10

På loginsidan eller i global.asa? Äh.. Det verkar funka att lägga den på loginsidan!

Tack ;)

Jesper

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)