Avatar billede goose Nybegynder
21. marts 2007 - 08:54 Der er 10 kommentarer og
2 løsninger

Brugerrettigheder i cms

Jeg sidder og roder med et lille cms hvor nogle sider skal kunne adgangsbeskyttes.

Jeg har flg. tabeller i min database:

TABEL_BRUGERGRUPPER
id (autonum)
gruppenavn (text)

TABEL_SIDER
id (autonum)
sidenavn (text)
sikkerhed (text)

TABEL_BRUGER
id (autonum)
loginnavn (text)
loginkode (text)
brugernavn (text)
loginaccept (text)

Nu opretter jeg f.eks. 5 forskellige brugeradgange i TBL_BRUGERGRUPPER.

Så opretter jeg en ny side i TBL_SIDER og i sikkerhed afkryder jeg 3 af de 5 brugeradgange, således at feltet "sikkerhed" kommer til at indeholde "2, 3, 5"

Så opretter jeg en bruger i TBL_BRUGER og vinger 2 brugergrupper af således, at feltet "loginaccept" f.eks. kommer til at indeholde "2, 4"

Spørgsmålet er nu, hvordan checker jeg, om f.eks: tallet "2" indgår i både "loginaccept" og i "sikkerhed" og brugeren dermed har adgang til at se siden?

Data fra feltet "loginaccept" lagres i en cookie når brugeren logger ind.

Er der evt. en anden måde at bygge strukturen op på som er bedre?

/Goose
Avatar billede goose Nybegynder
21. marts 2007 - 08:55 #1
- det må vel være noget med, at jeg for hvert tal i "loginaccept" skal checke om det findes i "sikkerhed", altså noget split og instr eller sådan noget?

/Goose
Avatar billede hnteknik Novice
21. marts 2007 - 16:01 #2
Jeg har lavet noget tilsvarende men anvender kaskadevis adgang, så 4 ser alt 4,3,2,1 3 ser 3,2,1 osv.

Hvis du har en parameter 2,4,5 kan du læse parameteren ind og via asp omdanne det til en array, som du kan læse igennem eller lave en instring kontrol af om 2 findes i string.
Avatar billede goose Nybegynder
21. marts 2007 - 17:20 #3
Ja det er nok noget af det sidste du skriver jeg skal have fat i, men kan du evt. give noget kode som kan sætte mig igang?

Det første du skriver kan jeg desværre ikke bruge, det lyder som noget hieraki-/ level-agtigt noget.

/Goose
Avatar billede hnteknik Novice
21. marts 2007 - 19:40 #4
Måske noget i retning af:

if instr(1, loginaccept,"2", 1) > 0 and instr(1, sikkerhed

,"2", 1) > 0then
  ' ok
else
  ' sorry
end if
Avatar billede goose Nybegynder
22. marts 2007 - 08:54 #5
hmmm, er ikke helt sikker på jeg forstår det du skriver.

I flg. min egen termologi, så må det være noget med, at jeg skal dele "loginaccept" op i et array.

For hvert tal i dette array indsætter jeg et komma før og efter værdien, f.eks: , 2,

og så skal jeg så se om denne værdi findes i "sikkerhed" som også lige skal tilføjes et komma før og efter værdien, ellers går det vist galt hvis jeg kommer over en værdi på 9.

Mit store problem er disse arrays, hvordan får jeg "loginaccept" splittet op og laver denne loop funktion der checker op imod "sikkerhed"?

/Goose
Avatar billede Slettet bruger
22. marts 2007 - 08:58 #6
Du kan også kigge på det forslag jeg har foreslået her:
http://www.eksperten.dk/spm/737646
Avatar billede goose Nybegynder
22. marts 2007 - 09:13 #7
kfisker>> såvidt jeg lige kan gennemskue så er det noget i den stil jeg efterlyser, men jeg kan ikkelige gennemskue PHP koden da jeg kun arbejder med ASP.

Jeg skal lige prøve nogle ting af, så vender jeg tilbage.

/Goose
Avatar billede goose Nybegynder
22. marts 2007 - 12:00 #8
Okay, så tror jeg det lykkedes med følgende kode:

<%
' **** Check om brugeren er logget ind ****

SQL = "select * from TBL_sider where id=" & request.querystring("id")
set rs = conn.execute(SQL)

if len(rs("password")) > 0 then

status = ""
loginaccept = request.Cookies("bruger")("password")
arrPassword = Split(rs("password"), ", ")
For t = 0 to UBound(arrPassword)
if instr(loginaccept, arrPassword(t)) > 0 then
status = status & arrPassword(t)
end if
next

if len(status) = 0 then
rs.close
set rs = nothing
conn.close
set conn = nothing
response.redirect "/nologin/"
end if

end if

' **** / Check om brugeren er logget ind ****
%>

Er der nogle af jer der vil have point - i satte mig trods alt i gang ;o)

/Goose
Avatar billede goose Nybegynder
22. marts 2007 - 12:23 #9
Det gik lige lidt galt hvis jeg kom op i tallet 10, så linien

if instr(loginaccept, arrPassword(t)) > 0 then

Skal rettes til

arrPassword(t) = ", " & arrPassword(t) &","
if instr(loginaccept, arrPassword(t)) > 0 then

- blot hvis nogen skulle have interesse :o)

/Goose
Avatar billede hnteknik Novice
22. marts 2007 - 16:12 #10
Har været i projekt hele dagen, men ser, at du har fået styr på det.
Avatar billede goose Nybegynder
22. marts 2007 - 22:15 #11
kfisker >> smider du ikke lige et svar også?

/Goose
Avatar billede Slettet bruger
23. marts 2007 - 11:59 #12
Svar
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