Avatar billede Slettet bruger
12. oktober 2008 - 21:27 Der er 5 kommentarer og
1 løsning

Problemer ved loginkode.

Hej.

Jeg har udarbejdet et login som egentligt virker ganske udemærket.
Dog er der det problem, at man bliver logget ud i tide og utide? Nogle gange selv efter 10 sekunder når man skifter side?

Bruger MSSQL database til at opbevare brugernavne og deres koder, og sessions til at holde styr på om man er logget ind.


Jeg bruger et par variabler:

' prefix of the session names
sessionPrefix = "obk"

' content of the login session
sessionLogin = "obkerloggetind"


Jeg bruger følgende kode til at logge ind:

if action = "login" then
  username = request.form("username")
  password = request.form("password")
 
  sql = "select * from " & userTable & " where username = '" & username & "'"
  set rs = conn.execute(sql)
 
  if rs.eof then
    response.redirect("?error=username")
  else
    if rs("logintries") >= loginTries then
      response.redirect("?error=blocked")
    else
      if password = rs("password") then
        session(sessionPrefix & "login") = sessionLogin
        session(sessionPrefix & "username") = rs("username")
       
        sql = "update " & userTable & " set logintries = 0 where username = '" & username & "'"
        conn.execute(sql)
       
        response.redirect(docName)
      else
        tries = rs("logintries") + 1
       
        sql = "update " & userTable & " set logintries = " & tries & " where username = '" & username & "'"
        conn.execute(sql)
       
        response.redirect("?error=password&n=" & loginTries - tries)
      end if
    end if
  end if
end if


Og følgende kode til at logge ud:

if action = "logout" then
  session(sessionPrefix & "login") = ""
  session(sessionPrefix & "username") = ""
  response.redirect(docName)
end if


Samt sidste kode til at tjekke på hver side, om man er logget ind:

if session(sessionPrefix & "login") <> sessionLogin then
  response.redirect("default.asp")
end if


Nogen der kan fortælle hvad der går galt, eller om det kunne laves langt smartere?
Det er meningen at det skal kunne bruges som flere-bruger-loginsystem.
Avatar billede Slettet bruger
12. oktober 2008 - 21:39 #1
Lige efter følgende del af din kode:

if password = rs("password") then
        session(sessionPrefix & "login") = sessionLogin
        session(sessionPrefix & "username") = rs("username")

mener jeg at du kan skrive følgende kodelinje for at fastsætte, hvor længe sessionen varer:

        Session.Timeout = 30

Dette vil sørge for, at sessionen vil vare i 30 minutter og derefter afslutte sig selv. En bruger vil dermed kunne være logget ind i 30 minutter.

Måske vil det hjælpe på den første del af dit spørgsmål. Håber det kan bruges.


  // Steeven
Avatar billede erikjacobsen Ekspert
12. oktober 2008 - 21:50 #2
Ikke til at sige ud fra det du viser. Men har du variablerne
  sessionPrefix = "obk"
  sessionLogin = "obkerloggetind"
på hver side?
Avatar billede cpufan Juniormester
13. oktober 2008 - 18:13 #3
sessionLogin er jo ikke en sessionvariabel men kun en variabel der lever på den pågældende side, så når du kører denne:

if session(sessionPrefix & "login") <> sessionLogin then
  response.redirect("default.asp")
end if

uden at have oprettet variablen sessionlogin på siden, ja så ryger du til forsiden

du kan istedet have

if session(sessionPrefix & "login")&"" <> "" then
  response.redirect("default.asp")
end if
Avatar billede Slettet bruger
21. oktober 2008 - 19:59 #4
sessionPrefix = "obk"
  sessionLogin = "obkerloggetind"

ligger i en fil der hedder settings.asp, som bliver inkluderet som det allerførste på hver side, hvor jeg bevare alle mine variabler i.. grunden til disse variabler er at jeg gerne vil kunne lave om på sessionsnavnene uden at skulle ændre en fandens masse linier og dokumenter..

jeg havde faktisk en session.timeout = 60 i mit login, men det hjalp ligevidt..

beklager den lange ventid på tilbagemeldingen.
Avatar billede Slettet bruger
25. oktober 2008 - 18:52 #5
Slet ingen?
Avatar billede erikjacobsen Ekspert
25. oktober 2008 - 21:11 #6
Jeg kan ikke se noget ud fra det du viser her. Et link til siden? Hele koden? Eller du laver udskrifter af variabler undervejs, så du selv kan debugge dig frem til problemet?
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