Avatar billede webbygger Nybegynder
11. september 2005 - 21:47 Der er 8 kommentarer og
1 løsning

Viderestilling efter login!

Jeg er ved at lave en login side, hvor man bliver viderestillet tilbage på den ønskede side efter login. Jeg har siddet og rodet med det et par aften, men efter login bliver den på samme side (login.asp) Jeg har hentede inspiration fra dette link http://eksperten.dk/spm/433329

Mine sider er :

\protect.asp\

<%
If isEmpty(Session("MEMBER_ID")) Then
    response.redirect "login.asp?page=" & Request.ServerVariables("SCRIPT_NAME")

End If
%>

\login.asp\


' Opbygning af SQL streng
        strSQL = "SELECT MEMBER_ID FROM PORTAL_MEMBERS"&_
            " WHERE (M_NAME = '" & strUID & "')"&_
            " AND (M_PASSWORD = '" & memPass & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("MEMBER_ID")
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Dit brugernavn eller password er forkert. <br> Prøv igen eller <a href=http://www.lystfiskerens.net/forum/policy.asp>indmeld</a> dig."
        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("MEMBER_ID") = intUID
           
            if request.querystring("page") <> "" then
      ' Brugeren er kommet til login siden, via en side der krævede login.
      ' Det er høfligt at sende ham tilbage til samme side:

        response.redirect request.querystring("page")
    else
      ' Brugeren kommer IKKE fra en side der kræver login.
      ' Fjern fejlmeddelelse, da brugeren er korrect logget in.
      strErr = ""
    end if
        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
Avatar billede softspot Forsker
11. september 2005 - 22:04 #1
På den beskyttede side skal du checke for om brugeren er logget på (som du allerede gør), men i stedet for redirect vil jeg foreslå at du benytter server.transfer til "login.asp".

På login.asp har du et check på om det er et loginforsøg, f.eks. således:

<%
if cstr(Request.Form("cmdLogin"))<>"" then
  '
  ' TODO: check om brugerens adgangskode og brugernavn er OK
  '

  ' Omdiriger til samme side som oprindeligt blev kaldt
  ' Hvis adgangskode ikke var korrekt vil brugeren bliver
  ' smidt omkring denne side igen...
  Response.Redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>

og ellers viser du bare formularen til at logge på:

<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
  Brugernavn: <input type="text" name="username"><br>
  Adgangskode: <input type="password" name="password"><br>
  <input type="submit" name="cmdLogin" value="Log på">
</form>
Avatar billede softspot Forsker
11. september 2005 - 22:09 #2
Du kan evt. smide nogle parametre på

  ' Omdiriger til samme side som oprindeligt blev kaldt
  ' Hvis adgangskode ikke var korrekt vil brugeren bliver
  ' smidt omkring denne side igen...
  Response.Redirect Request.ServerVariables("SCRIPT_NAME") & "?fejl=" & fejlkode

hvor fejlkode så er den fejl du gerne vil viderebringe til brugeren, samtidig med at du efterfølgende viser formularen, f.eks.:

<%
if cstr(Request.Form("cmdLogin"))<>"" then
  '
  ' TODO: check om brugerens adgangskode og brugernavn er OK
  '

  ' Omdiriger til samme side som oprindeligt blev kaldt
  ' Hvis adgangskode ikke var korrekt vil brugeren bliver
  ' smidt omkring denne side igen...
  Response.Redirect Request.ServerVariables("SCRIPT_NAME")
else
  ' opbyg en fejlmeddelelse til formularen
  select case cstr(Request.QueryString("fejl"))
    case "1"
      strMeddelelse = "Brugernavn eller adgangskode er ikke gyldig."

    case else
      strMeddelelse = ""
  end select
end if
%>
<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<%
if len(strMeddelelse) > 0 then
  Response.Write "Fejl: " & strMeddelelse
%>
  Brugernavn: <input type="text" name="username"><br>
  Adgangskode: <input type="password" name="password"><br>
  <input type="submit" name="cmdLogin" value="Log på">
</form>
Avatar billede softspot Forsker
11. september 2005 - 22:10 #3
Ups! mangler lige en end if omkring udskrivelsen af fejlmeddelelsen


<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<%
if len(strMeddelelse) > 0 then
  Response.Write "Fejl: " & strMeddelelse
end if
%>
  Brugernavn: <input type="text" name="username"><br>
  Adgangskode: <input type="password" name="password"><br>
  <input type="submit" name="cmdLogin" value="Log på">
</form>
Avatar billede webbygger Nybegynder
11. september 2005 - 22:28 #4
HMmmmm nu går det hele op i hat og brille for mig - softspot:o((

\protect.asp skal se sådan ud eller \

<%
If isEmpty(Session("MEMBER_ID")) Then
    server.transfer "login.asp?page=" & Request.ServerVariables("SCRIPT_NAME")

End If
%>
Avatar billede softspot Forsker
11. september 2005 - 22:30 #5
Nej, mere simpel :)

<%
If isEmpty(Session("MEMBER_ID")) Then
    server.transfer "login.asp"
End If
%>
Avatar billede webbygger Nybegynder
11. september 2005 - 22:40 #6
Yes nu er den der ;0)

Tak for hjælpen softspot - smider du et svar!
Avatar billede softspot Forsker
11. september 2005 - 22:41 #7
Det fik du der :)
Avatar billede softspot Forsker
11. september 2005 - 22:44 #8
Tak for point :)
Avatar billede webbygger Nybegynder
11. september 2005 - 22:46 #9
Det er mig der takker ;o))
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