Avatar billede mrjowns Novice
15. august 2001 - 16:30 Der er 11 kommentarer og
1 løsning

Tjekke variabel??? SQL

Jeg har brugt LOGON_USER (User) og gemt res. i en db. User\'s rettigheder (Rettigheder) er automatisk blevet tildelt værdien 1 (for bruger). Nu vil jeg gerne have at den går ind og tjekker mig (som bruger) og fortæller om jeg er admin eller bruger - jeg kan ikke få det til at virke!

\'    Her hiver vi indholdet af databasen ud, sorterer dem efter User
    Sql = \"SELECT * FROM Session ORDER BY User DESC\"
    Set Record = Conn.Execute(Sql)
   
    Bruger = \"bruger\"
    Admin = \"admin\"
   
    Dim Ret
    sql = \"SELECT User, Rettigheder, Side from Session\"
    set record=conn.execute(sql)
    If Instr(record(\"User\"), \"Rettigheder\" ) > 1 Then
      Ret = Bruger
    else
    Ret = Admin
    end if

Næsten uanset hvad jeg gør, giver den mig en kun Admin eller kun Bruger - kan man overhovedet gøre sådan som jeg har gjort!
Avatar billede mrjowns Novice
15. august 2001 - 16:35 #1
...admin har værdien 3!
Avatar billede Spotgun Seniormester
15. august 2001 - 16:50 #2
Jeg kunne forestille mig noget i retningen af:

SQL = \"SELECT * FROM Session ORDER By User DESC\"
Set Record = Conn.Execute(SQL)

While not Record.EOF
  If Record(\"Rettigheder\") > 1 Then
    type = \"Admin\"
  Elseif Record(\"Rettigheder\") = 1 Then
    type = \"Bruger\"
  End If

  Response.write \"Brugeren \'\"& Record(\"User\") &\"\' er: \"& type
  Record.Movenext
Wend


Jeg har ikke tjecket om det her virker, men det burde efter alt sandsynlighed give et brugbart resultat...
Avatar billede Spotgun Seniormester
15. august 2001 - 16:54 #3
Hvis det kun er en enkelt bruger du vil tjecke rettighederne for, kan du stryge while-sætningen og lave SQL\'en om til at kigge efter en bruger med et bestemt navn...
Avatar billede mrjowns Novice
15. august 2001 - 16:56 #4
Nu tjekker du jo på alle i db\'en - jeg er kun interesseret i at vide om jeg (User) er admin eller bruger, og det kan du vel først når du har fundet ud af hvem det er du skal tjekke rettigheder for? ...eller hvad?
Avatar billede mrjowns Novice
15. august 2001 - 16:58 #5
Ups - kom til at ACCEPTERE!!!

Kan du ikke forklare mig lidt nærmere hvordan jeg skulle gøre det - med at tjekke på den enkelte bruger!

--jowns--
Avatar billede Spotgun Seniormester
15. august 2001 - 17:00 #6
Hvis du kun vil tjekke for den aktuelle user, så prøv noget alá det her:

Siden skal kaldes sådan her: dinside.asp?user=brugernavnet

SQL = \"SELECT * FROM Session Where User = \'\"& Request(\"user\") &\"\'\"
Set Record = Conn.Execute(SQL)

If not Record.EOF Then
  If Record(\"Rettigheder\") = 3 Then
    type = \"Admin\"
  Elseif Record(\"Rettigheder\") = 1 Then
    type = \"Bruger\"
  End If

  Response.write \"Brugeren \'\"& Record(\"User\") &\"\' er: \"& type
End If

Så vil jeg tro det virker
Avatar billede Spotgun Seniormester
15. august 2001 - 17:00 #7
Alternativt kan du gemme brugernavnet i en session-variabel... Men ovenstående metode burde fungere på den måde du efterspørger...
Avatar billede mrjowns Novice
15. august 2001 - 17:04 #8
Jeg forstår det ikke - sorry, jeg er newbie!!!

I toppen af siden står følgende:

<%
Dim Conn
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\\\\xxx\\xxx.mdb;\"

\' Find Brugerens loginnavn (skal være på formen domæne/bruger)
    User = Request.Servervariables(\"LOGON_USER\")

    tmpArr = SPLIT( User, \"\\\" )
    Side = tmpArr(0)
    User = tmpArr( UBOUND(tmpArr) )
   
    session(\"User\") = lcase(User)

    Rettigheder = 1

    Dim RS, DB
    Set RS = Conn.Execute(\"Select * From Session Where User = \'\" & User & \"\'\")
    If    RS.EOF Then
        Sql = \"INSERT INTO Session (User, Rettigheder, Side)\"
        Sql = Sql & \"VALUES(\'\" & User & \"\',\'\" & Rettigheder & \"\',\'\" & Side & \"\')\"
    Conn.Execute (SQL)
   
\'    Her hiver vi indholdet af databasen ud, sorterer dem efter User
    Sql = \"SELECT * FROM Session ORDER BY User DESC\"
    Set Record = Conn.Execute(Sql)
%>

Jeg kan ikke umiddelbart kalde siden som du siger! Hvad skal jeg gøre?
Avatar billede Spotgun Seniormester
15. august 2001 - 17:09 #9
Så vidt jeg lige kan gennemskue din kode, så gemmer du brugernavnet i Session(\"user\") ikke? Hvis det er tilfældet, så skal sql-sætningen være:

\"SELECT * FROM Session Where User = \'\"& Session(\"user\") &\"\'\"

På den måde behøver du ikke kalde siden med nogle parametre!
Resten af mit forslag burde stadigvæk virke efter hensigten...
Avatar billede mrjowns Novice
16. august 2001 - 12:05 #10
Ok, nu tror jeg jeg er ved at forstå det! Kan man ikke gøre sådan istedet:

    Bruger = \"bruger\"
    Admin = \"admin\"
   
    Dim Ret
    sql = \"SELECT * FROM Session Where User = \'\"& Session(\"user\") &\"\'\"
    Set Record = Conn.Execute(SQL)
   
    If not Record.EOF Then
    If Record(\"Rettigheder\") = 3 Then
    Ret = \"Admin\"
    Elseif Record(\"Rettigheder\") = 1 Then
    Ret = \"Bruger\"
    End If

...og så lave denne linie lægere nede i min html:

        <td colspan=\"3\" align=\"center\" cellspan=\"3\">Du er logget ind som <% = User %> - du har <% = Ret %>-rettigheder</td>

Det ser ikke ud til at give nogen fejl, altså ovenstående stykke kode. Men helt i bunden har jeg følgende:

<%
End if
Conn.Close
Set Conn = Nothing
%>

...og jeg får følgende fejl:

Microsoft VBScript compilation (0x800A03F6)
Expected \'End\'
xxx/Default.asp, line 121

Linie 121 er:

Set Conn = Nothing

Hvorfor gør den nu det?
Avatar billede Spotgun Seniormester
16. august 2001 - 12:18 #11
Højst sandsynligt fordi du mangler en END et sted. Tjek din kode igennem, og se om alle IF/End passer sammen. Så vil du nok opdage at der mangler noget et sted...
Avatar billede mrjowns Novice
16. august 2001 - 12:24 #12
Kanoon! Nu virker det bare! Og...ja du har jo allerede fået pointene!!!  :-)
Tak for hjælpen!

--jowns--
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