Avatar billede Slettet bruger
18. maj 2006 - 13:54 Der er 9 kommentarer og
1 løsning

Ret status når bruger logget ind

Hej.

Hvordan gør man at den retter status i databasen til Online når brugeren logger ind?

Min login ser sådan her ud

<%
' Hvis der er blevet trykket på knappen "Login"
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
  ' Her forberedes de indtastede værdier til validering
  strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
  strPWD = Trim(Replace(Request.Form("Kodeord"),"'",""))

  ' Hvis der er skrevet noget i både brugernavn og adgangskode
  If Len(strUID) > 0 And Len(strPWD) > 0 Then

    ' DSNLess forbindelse til databasen
    Set myConn = Server.CreateObject("ADODB.Connection")
    myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db/brugersystem.mdb")

    ' Opbygning af SQL streng
    strSQL = "SELECT * FROM bruger WHERE (Brugernavn = '" & strUID & "') AND (Kodeord = '" & strPWD & "')"
    Set rs = myConn.Execute(strSQL)
    If Not (rs.BOF Or rs.EOF) Then
      ' Hvis brugeren fandtes i databasen
      intUID = rs("id")
    Else
      ' Hvis brugeren ikke fandtes i databasen
      strERR = "Du blev ikke godkendt af systemet"
    End If

    ' Rydder op i vores connection objekt
    myConn.Close
    Set myConn = Nothing

    If Len(intUID) Then
      ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
      Session("UserID") = intUID
      Response.Redirect("index.asp")
    End If
  Else
    ' Hvis der ikke var angivet brugernavn og adgangskode
    strErr = "Du skal skrive både brugernavn og adgangskode"
  End If

  If Len(strErr) > 0 Then
    ' Her laves fejlmeddelsen om til rød skrift
    strErr = "<p><font color=red>" & strErr & "</font></p>"
  End If
End If
%>
<font color="red" style="font-size:12px;"><b><%=strErr%></b></font>
<form action="indhold.asp" method="POST" style="margin-bottom:0px;" ><font  color="#FFFFFF" style="font-size:12px;"><input type='hidden' name="status" value="Online">Brugernavn: <input name="Brugernavn" id="loginform"> Adgangskode: <input type="password" name="Kodeord" id="loginform"> <input type="submit" tabindex="4" src="http://images.leol.dk/BG.PNG" value="Login" name="Action" value="Logon" style="height: 20px;font-size: 12px;color: green;width:100px;font-weight: bold;font-family:tunga;"></font></form>

Og jeg har en kode der retter det som når bruger er logget ind. Som jeg fik tidligere til at  rette sit brugernavn. Hvis i skal bruge det

<%
if session("UserID") <> "" then
    if request.querystring("act") = "save" then
Const adOpenDynamic = 2
Const adLockOptimistic = 3   
Const adCmdTable = &H0002   
Set rs = Server.CreateObject("ADODB.RecordSet")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("/db/brugersystem.mdb")
rs.Open "bruger", strDSN, adOpenDynamic, adLockOptimistic, adCmdTable
rs.find "id=" & session("UserID") & ""
rs("ProfilTekst") = request.form("profiltekst")
rs.update
rs.close
set rs = Nothing
response.redirect request.servervariables("script_name")
    end if
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("/db/brugersystem.mdb")
set rs = Conn.execute("select * from bruger WHERE id=" & session("UserID") & "")
if NOT rs.EOF then
profiltekst = rs("ProfilTekst")
%>
Avatar billede tofte Juniormester
18. maj 2006 - 14:07 #1
du kan bare tilføje
    strSQL = "UPDATE bruger SET status='Online' WHERE id="&intUID
    myConn.Execute(strSQL)

efter linierne
'Hvis brugeren fandtes i databasen
intUID = rs("id")

du skal selvfølgelig ændre status til navnet på det felt hvor du holder styr på hvem der er online eller ej.

Håber det er det som du mener?
Avatar billede Slettet bruger
18. maj 2006 - 14:50 #2
Forstod ikke det med "du skal selvfølgelig ændre status til navnet på det felt hvor du holder styr på hvem der er online eller ej."
Avatar billede Slettet bruger
18. maj 2006 - 15:02 #3
Virker nu..

Men lige 1 ting til..

Hvordan gør jeg så når brugeren logger ud at den sætter sig til Offline. Min log ud kode ser sådan her ud:

<%
Session.Abandon()
Response.Redirect("index.asp")
%>
Avatar billede tofte Juniormester
19. maj 2006 - 00:59 #4
Du kan tilføje noget ala :

    Set myConn = Server.CreateObject("ADODB.Connection")
    myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db/brugersystem.mdb")


    strSQL = "UPDATE bruger SET status='Offline' WHERE id="&Session("UserID")
    myConn.Execute(strSQL)
    myConn.close
    set myCon = nothing

til dit logoff script. Men problmer er så bare, at hvad med dem som ikke logger ud?
Avatar billede Slettet bruger
20. maj 2006 - 13:02 #5
De skal blive logget ud når de ikke har bevæget sig i 1 time
Avatar billede tofte Juniormester
20. maj 2006 - 14:48 #6
Hvis du skal have brugerne til automatisk at blive logget af, synes jeg du skal læse :
http://www.eksperten.dk/artikler/752

Der er et godt eksempel.
Avatar billede Slettet bruger
20. maj 2006 - 16:16 #7
Jeg har læst den og forstod den ikke
Avatar billede tofte Juniormester
20. maj 2006 - 19:22 #8
du skal lave en fil med følgende :
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnEnd
    Set myConn = Server.CreateObject("ADODB.Connection")
    myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db/brugersystem.mdb")


    strSQL = "UPDATE bruger SET status='Offline' WHERE id="&Session("UserID")
    myConn.Execute(strSQL)
    myConn.close
    set myCon = nothing
End Sub
</SCRIPT>

Filen skal gemmes som global.asa og skal ligge i rodbiblioteket på dit website. Så logges brugerne automatisk ud, også hvis de glemer at trykke logoff.
Avatar billede Slettet bruger
20. maj 2006 - 19:26 #9
Ok.. Tak
Avatar billede Slettet bruger
21. maj 2006 - 12:20 #10
Det virker ikke......

Heller ikke det med når man trykker logud,,
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester