Avatar billede Jman Praktikant
22. august 2002 - 01:54 Der er 5 kommentarer og
1 løsning

if not xxx or yyy = true then

Jeg har bixet flg. kode sammen til at kigge på om brugeren matcher accesdatabase enten som admin eller supporter:
---------------
<!--#include file="dbconnection.inc"-->
<%
SQL = "SELECT * FROM Users where Username ='" & session("username") & "'"
set rs = Conn.Execute(sql)

if not rs("admin") or rs("supporter") = true then
    Response.Redirect("eAdminRettigheder.asp")
End If
%>

<% Response.Buffer = True %>
<% mode = Request("mode") %>
---------------
Mit problem er at det virker, hvis man er logget ind som bruger med admin-retigheder, men ikke hvis man er logget ind som bruger med supporter-rettigheder....
Er der en venlig sjæl, der kan forklare hvad jeg gør galt?
Avatar billede sn0wflake Nybegynder
22. august 2002 - 01:59 #1
Jeg tror at du blander de to ting sammen til at de begge skal være opfyldt. Prøv dette (jeg er lidt usikker på om første del skal være true eller false):

if rs("admin") = false or rs("supporter") = true then
Avatar billede keysersoze Ekspert
22. august 2002 - 02:15 #2
den eneste umiddelbare fejl du har et at din if-sætning skal se sådan ud for at være korrekt;

if not rs("admin") = true or rs("supporter") = true then
Avatar billede coltau Juniormester
22. august 2002 - 07:25 #3
Jeg kan ikke gætte hvad koden skal. ? Men jeg kan forklare dig hvad der sker i din if-sætning.

if not rs("admin") or rs("supporter") = true then
   
Hvis rs("admin") er blank ELLER rs("supporter") = true så Redirectes til eAdminRettigheder.asp ellers udføres ASP-koden nedenunder.

Hvad du nøjagtigt skal skrive afhænger af felttyperne i DB. Hvis felttyperne er Ja/Nej-felter (Bolske) skal du anvende denne metode: (if rs("feltnavn") = false) i stedet for denne: (if not rs("feltnavn"))

Hvis du ellers er i tvivl med sådan en if-sætning så del den op i to - det hjælper på forståelsen.
Avatar billede neteffect Nybegynder
22. august 2002 - 08:18 #4
Det er aldrig nødvendigt at sammenligne boolske udtryk med true eller false, hverken i VBScript eller noget andet programmeringssprog.

Den korte version:

if not (rs("admin") or rs("supporter")) then
  'er hverken admin eller supporter
end if


Lidt længere, men uden parenteser:

if not rs("admin") and not rs("supporter") then
  'er ikke admin og heller ikke supporter
end if
Avatar billede Jman Praktikant
22. august 2002 - 09:18 #5
hmm - det virkede ikke - ingen af delene. Det kan være jeg skal lære at udtrykke mig mere klart ;)

Jeg ønsker at lave et check i databsen om brugeren der er logget ind enten har checktegn i et true/false-felt som hedder admin eller et true/false-felt som hedder (altså om brugeren har rettigheder som admin eller supporter). Hvis brugeren er enten admin eller supporter, må de gerne komme ind på siden - hvis ikke skal brugeren redirectes til eAdminrettigheder.asp

>>sn0wflake:
din duer ikke, da en admin godt kan have False i support-feltet
>>keysersoze:
Din giver samme problem jeg hele tiden har haft: Admin må gerne komme ind, men supporter må ikke
>>coltau:
Samme problem, som kerserzone
>>neteffect:
Jeg tror sgu at din nederste version virker :)

TAK for hjælpen - og forsøgene!
Avatar billede coltau Juniormester
22. august 2002 - 09:50 #6
Så er jeg med. :-)

Hvis du ikke kan bruge andre så anvend denne. (Den er testet)

if (RS("admin") + RS("supporter")) = False then
  Response.Write("Hverken admin eller supporter: ")
end if
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