Avatar billede Slettet bruger
14. maj 2008 - 10:34 Der er 14 kommentarer og
1 løsning

Genbrug "brugernavn" fra login i ASP udtræk

Fik lige et super loginscript som virker perfekt.

Jeg vil nu gerne lave et udtræk fra min database på en ny side som brugeren er logget ind på. Hvordan genbruger jeg brugernavnet så jeg f.eks. kan lave følgende:

strSQL = "SELECT * FROM moviedb where bruger = (brugernavnet på brugeren)

I kan se koden til mit login system her:
http://activedeveloper.dk/articles/88/

Mvh.
Henrik
Avatar billede Slettet bruger
14. maj 2008 - 10:35 #1
Kan man overfører brugernavnet til session eller hvordan dælen får man tricket den? :-)
Avatar billede keysersoze Guru
14. maj 2008 - 10:39 #2
opbygget korrekt vil du aldrig sammenligne på brugernavn men derimod brugerid - forestil dig et bøvl hvis du bruger brugernavn som relation og en bruger så skifter navn.

strSQL = "SELECT * FROM moviedb where brugerid = " & Session("UserID")
Avatar billede Slettet bruger
14. maj 2008 - 10:44 #3
Problemet er at jeg skal udtrække noget fra en anden database, hvor jeg har smidt deres brugernavn ind som "uploader". Derfor skal den udtrække de tabeller hvor uploadernavn = brugernavn ... Det kan jeg vel ikke bruge brugerid til?
Avatar billede Slettet bruger
14. maj 2008 - 10:49 #4
Den skal bare bruge brugernavn... Ved godt det ikke er smart hvis de skifter, men så skal det gamle navn bare blive i databasen alligevel, så det er ok.. :-)
Avatar billede Slettet bruger
14. maj 2008 - 10:52 #5
Kan man på den nye side bruge Session("UserID") og udskrive brugernavnet fra brugerdatabasen som tilhører "UserID" og så lave den til en variabel med brugernavnet som jeg kan bruge?
Avatar billede keysersoze Guru
14. maj 2008 - 11:02 #6
du har to muligheder - enten skal du joine de to tabeller sammen for så kan du stadig godt bruge id'et, alternativt kan du lave en ekstra session med navnet i dit login, fx Session("username")
Avatar billede Slettet bruger
14. maj 2008 - 11:05 #7
Jeg vil nok vælge at lave en session med username... Hvordan får jeg den med? Har lige prøvet at rode med det, men det lykkedes ikke rigtigt. Prøvede at kigge på hvordan den anden session var lavet, men så kunne jeg pludselig ikke logge ind, så et eller andet forkert må jeg have lavet.

Har følgende kode:


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

    ' 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("/database/login_2000.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT UserID FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("UserID")
        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("beskyttet.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
%>
Avatar billede keysersoze Guru
14. maj 2008 - 11:22 #8
Lav den hurtige og sæt dette lige under din første session;

Session("UserName") = strUID
Avatar billede Slettet bruger
14. maj 2008 - 11:29 #9
Okay, du mener altså sådan her?

Og i min udtræk bagefter, kan jeg så skrive?
strSQL = "SELECT * FROM moviedb where brugeravn = " & Session("UserName")

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
            Session("UserName") = strUID
            Response.Redirect("beskyttet.asp")
Avatar billede keysersoze Guru
14. maj 2008 - 11:49 #10
du behøver ikke at ændre andet end at tilføje den linie jeg skrev. Hvis du vil gøre det i din retning mangler du også

strUID = rs("Username")

lige under linien med

intUID = rs("UserID")
Avatar billede Slettet bruger
14. maj 2008 - 12:07 #11
Jeg er ikke helt med på det første du skrev, altså den hurtige.

Men når jeg prøvede at lave det du lige skrev kommer den med følgende:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/u/login.asp, line 26

Det er linjen
  strUID = rs("Username")
som jeg har sat ind lige efter
    intUID = rs("UserID")
Avatar billede Slettet bruger
14. maj 2008 - 12:19 #12
Jeg tilføjede lige Username i nedenstående, nu virker det.
Er det rigtigt nok?

              ' Opbygning af SQL streng
        strSQL = "SELECT Username, UserID FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("UserID")
            strUID = rs("Username")
Avatar billede Slettet bruger
14. maj 2008 - 12:24 #13
Det virker nu.. :-)
Har lige prøvet at udskrive session(username) på den nye side og den udskriv brugernavnet, så det er super.

Men har lidt bøvl med at lave denne, hvad går der galt her?
strSQL = "SELECT * FROM seneste where brugernavn = " & Session("Username")

(tabellen som den skal checke i hedder brugernavn), er det så ikke rigtigt?
Avatar billede keysersoze Guru
14. maj 2008 - 12:30 #14
strSQL = "SELECT * FROM seneste where brugernavn = '" & Session("Username") & "'"
Avatar billede Slettet bruger
14. maj 2008 - 12:32 #15
Jaaaaaaaaaaaaaaaaaaaa... :-)

Super konge fedt..... Så duer det... Fedt fedt fedt...

Mange tak for hjælpen.. :-)
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