/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Administrationsmodul til password-login
Fra : Erik Ginnerskov


Dato : 09-12-06 00:59

Hej NG

Til min password-funktion har jeg forsøgt at lave et
online-administrationsmodul. Planen er, at alle lovlige brugere skal
oplistes, der skal etableres mulighed for at slette enkelte brugere og
mulighed for at tilføje nye brugere.

Foreløbig er projektet strandet på forsøget på at aflæse indholdet i
databasen. Jeg får denne fejlmelding:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0400)
En sætning var ventet
/scripts/asppass/brugeradmin.asp, line 56
End If

Jeg har prøvet at kigge efter en forklaring på fejlnummeret på aspfaq.com,
men det blev jeg ikke klogere af. ;-(

Sidens kildekode kan ses her:

http://hjemmesideskolen.dk/scripts/asppass/admin.txt

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



 
 
VagnT (09-12-2006)
Kommentar
Fra : VagnT


Dato : 09-12-06 09:36

Erik Ginnerskov wrote in dk.edb.internet.webdesign.serverside.asp:

> Foreløbig er projektet strandet på forsøget på at aflæse indholdet i
> databasen. Jeg får denne fejlmelding:
>
> Fejltype:
> Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0400)
> En sætning var ventet
> /scripts/asppass/brugeradmin.asp, line 56
> End If
>
Hvor er det lige at du tildeler en værdi til variablen strDsn ?

den her linie vil fejle myConn.Open strDsn fordi strDsn er tom

mvh

vagnT

ps. ret gnyf til fabel i mailadressen

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Torben Brandt (09-12-2006)
Kommentar
Fra : Torben Brandt


Dato : 09-12-06 09:43

Erik Ginnerskov wrote in dk.edb.internet.webdesign.serverside.asp:
> Foreløbig er projektet strandet på forsøget på at aflæse indholdet i
> databasen. Jeg får denne fejlmelding:
>
> Fejltype:
> Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0400)
> En sætning var ventet
> /scripts/asppass/brugeradmin.asp, line 56
> End If
>
> Sidens kildekode kan ses her:
>
> http://hjemmesideskolen.dk/scripts/asppass/admin.txt

Det er noget rod at rette i koden fra fejlen blev givet til den blev lagt ud
som tekstfil. Den kode du har lagt ud giver fejlen i linie 50, og ikke 56 !

Her er derfor lige et udsnit omkring linie 50:
If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF
Response.Write "<p>Bruger: " & rs("UserID") & " " & rs("Password") & "</p>"
End If
rs.MoveNext
Loop
Linien der fejler er den med "End If", og grunden er at du har startet en
If-blok, og derefter startet en Do-blok. Så skal Do-blokken afsluttes før
If-blokken, men du skriver End If inden Loop.
Når du ikke har afsluttet din Do-blok er End If ikke tilladt, da der ikke er
nogen If-blok at afslutte. Derfor fejlen.

mvh Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Erik Ginnerskov (10-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 10-12-06 01:16

Torben Brandt wrote:
> Det er noget rod at rette i koden fra fejlen blev givet til den blev
> lagt ud som tekstfil. Den kode du har lagt ud giver fejlen i linie
> 50, og ikke 56 !

Sorry, du har ret. Det tænkte jeg ikke lige over. Jeg havde bare fjernet
noget login, der ikke var aktuelt i denne problemstilling.

Jeg prøvede at begynde forfra, for det ville ikke som jeg, da jeg prøvede at
møblere om.

Jeg tog et administrationsmodul fra en anden sammenhæng og tilrettede til
dette brug. Nye filnavne:

http://hjemmesideskolen.dk/scripts/asppass/admin.asp

http://hjemmesideskolen.dk/scripts/asppass/admin-asp.txt
http://hjemmesideskolen.dk/scripts/asppass/admin-inc.txt
http://hjemmesideskolen.dk/scripts/asppass/admindel-asp.txt

Nu fik jeg udlæsning fra databasen på plads. Men når jeg forsøger at slette
en bruger, får jeg denne fejlmelding:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver]General error Unable
to open registry key 'Temporary (volatile) Jet DSN for process
0xfe0 Thread 0x3624 DBC 0xabe600c Jet'.

/scripts/asppass/admindel.asp, line 6

Jeg bruger databasen users.mdb og deri læser jeg tabellen tblUsers, hvori er
felterne UserID og Password.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk




Erik Ginnerskov (12-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 12-12-06 01:40

Erik Ginnerskov wrote:

> Nu fik jeg udlæsning fra databasen på plads. Men når jeg forsøger at
> slette en bruger, får jeg denne fejlmelding:
>
> [klip fejlmelding]

Jeg har arbejdet lidt videre med det og er nu kommet frem til dette indhold
i scriptet, som skal slette en bruger i databasen:

<% Dim id
id = Request.QueryString("id")
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("users.mdb")
Conn.Open DSN
Conn.Execute("DELETE * FROM tblUsers WHERE id=" & id)
Conn.Close
Set Conn = Nothing
Response.Redirect("admin.asp") %>

Nu fungerer den del. Så mangler jeg kun at få sidste del - indsættelse af
nye brugere - det fik jeg minsandten også til at du. Case closed. Nu skal
jeg have det gjort tilgængeligt for alle.

Glædelig jul til gruppens brugere.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jens Gyldenkærne Cla~ (12-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-12-06 09:05

Erik Ginnerskov skrev:

> id = Request.QueryString("id")

[snip]

> Conn.Execute("DELETE * FROM tblUsers WHERE id=" & id)

Av av - kan du forestille dig hvad der sker hvis en ondsindet
person kalder din side med følgende værdi for id: "0 OR 1=1" ?

Man bør *aldrig* anvende formdata uden en fornuftig datavalidering
- i særdeleshed ikke når der er opdaterings- eller
sletteforespørgsler involveret.

Tag et kig på siden her: <http://asp-faq.dk/article/?id=95> der
viser hvad man kan gøre for at undgå problemer med sql-injection.

Lille sidekommentar: Stjernen (*) skal ikke anvendes i
sletteforespørgsler - der er ingen grund til at angive hvilke
felter der skal slettes, eftersom en sletteforespørgsel kun kan
slette hele poster. I standard sql vil man derfor bare skrive
"DELETE FROM x WHERE id = 42". Access forstår sletteforespørglen
både med og uden stjerne, men man skal ikke regne med at det virker
i andre databaseprogrammer.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (12-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 12-12-06 22:38

Jens Gyldenkærne Clausen wrote:

> Av av - kan du forestille dig hvad der sker hvis en ondsindet
> person kalder din side med følgende værdi for id: "0 OR 1=1" ?

Det er naturligvis ikke meningen, at denne administrationsside skal være
offentligt tilgængelig - admin only, hvilket jeg da også vil påpege, når jeg
lægger funktionen ud. Så risikoen burde være overskuelig.

Det var kun tænkt som en lettere måde at tilføje eller slette brugere end
ved at skulle hente databasen hjem, redigere den i Access og så uploade
basen igen.

> Man bør *aldrig* anvende formdata uden en fornuftig datavalidering
> - i særdeleshed ikke når der er opdaterings- eller
> sletteforespørgsler involveret.
>
> Tag et kig på siden her: <http://asp-faq.dk/article/?id=95> der
> viser hvad man kan gøre for at undgå problemer med sql-injection.


Der er slet ikke designet nogen mulighed for at inputte ulovlige data, så
forkerte eller alle poster kan slettes. Siden er udformet sådan, at der er
et slettelink ud for hver enkelt post (ingen inputfelter overhovedet) og et
klik på et link sletter så kun den ene post.

> Lille sidekommentar: Stjernen (*) skal ikke anvendes i
> sletteforespørgsler - der er ingen grund til at angive hvilke
> felter der skal slettes, eftersom en sletteforespørgsel kun kan
> slette hele poster.

Det har du da ret i, det fungerer uden. Jeg synes bare, at jeg ikke kunne få
det til at fungere, før den stjerne var blevet indsat.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (12-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 12-12-06 23:08

On Tue, 12 Dec 2006 22:37:49 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Jens Gyldenkærne Clausen wrote:
>
>> Av av - kan du forestille dig hvad der sker hvis en ondsindet
>> person kalder din side med følgende værdi for id: "0 OR 1=1" ?
>
>Det er naturligvis ikke meningen, at denne administrationsside skal være
>offentligt tilgængelig - admin only, hvilket jeg da også vil påpege, når jeg
>lægger funktionen ud. Så risikoen burde være overskuelig.
>
>Det var kun tænkt som en lettere måde at tilføje eller slette brugere end
>ved at skulle hente databasen hjem, redigere den i Access og så uploade
>basen igen.

Det er enkelt at lave en simpel validering, som virker - især når
værdien er numerisk.
Check blot, at id er numerisk og evt. at det er et heltal, så er du
ude over risikoen.

>Der er slet ikke designet nogen mulighed for at inputte ulovlige data, så
>forkerte eller alle poster kan slettes. Siden er udformet sådan, at der er
>et slettelink ud for hver enkelt post (ingen inputfelter overhovedet) og et
>klik på et link sletter så kun den ene post.

Du kan formindske risikoen noget ved at sende formdata som POST i
stedet for GET - så vil du ikke have id'erne stående i url-historikker
rundt omkring.



Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (12-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 12-12-06 23:40

Jørn Andersen wrote:
> On Tue, 12 Dec 2006 22:37:49 +0100, "Erik Ginnerskov"

> Det er enkelt at lave en simpel validering, som virker - især når
> værdien er numerisk.
> Check blot, at id er numerisk og evt. at det er et heltal, så er du
> ude over risikoen.

Siden, der sletter poster, kan se sådan ud:

Slet bruger => brugernavn: johansen, password: 123456
Slet bruger => brugernavn: jørgensen, password: abcdef
Slet bruger => brugernavn: nielsen, password: 1a2b3c

Scriptet, der aflæser databasen lægger et slettelink på 'Slet bruger' med et
unikt numerisk id på linket - aflæst i databasen. Ordene 'brugernavn og
password ligger direkte i en response.write-loop, der kører databasens
poster igennem og udskriver indholdet af bruger og password ved hver enkelt
post.

Når der så klikkes på 'Slet bruger' ud for nielsen, slettes posten
'nielsen'. Der vil ikke kunne sendes forkert id med sletteordren.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (13-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 13-12-06 08:57

On Tue, 12 Dec 2006 23:40:15 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Scriptet, der aflæser databasen lægger et slettelink på 'Slet bruger' med et
>unikt numerisk id på linket - aflæst i databasen. Ordene 'brugernavn og
>password ligger direkte i en response.write-loop, der kører databasens
>poster igennem og udskriver indholdet af bruger og password ved hver enkelt
>post.
>
>Når der så klikkes på 'Slet bruger' ud for nielsen, slettes posten
>'nielsen'. Der vil ikke kunne sendes forkert id med sletteordren.

Næh, ikke fra slettelinket, men andre steder fra - fx fra
url-historik'er.

Hvis du mener det dækker dit sikkerhedsbehov, så har jeg sådan set
ingen problemer med det.
Du har tidl. nævnt, at der er tale om en lukket brugergruppe. Det
sænker selvfølgelig behovet for at sikre sig mod *ondsindede angreb*.

Enhver sikkerhedsindsats er jo en afvejning af risiko og konsekvens
mod de ressourcer, der skal bruges sikkerheden, samt de gener det evt.
måtte medføre. Der findes ikke en "absolut" sikkerhed, som altid skal
overholdes.

Jeg har blot peget på et par enkle ting, der vil lukke nogle huller.


Good luck!

--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (13-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-12-06 09:16

Erik Ginnerskov skrev:

> Når der så klikkes på 'Slet bruger' ud for nielsen, slettes
> posten 'nielsen'. Der vil ikke kunne sendes forkert id med
> sletteordren.

Højreklik på linket, vælg kopier linkadresse, sæt det ind i
adresselinjen og ret id-værdien. Det er uhyggelig let. Med POST-
formularer er det mere besværligt, men stadig ikke umuligt.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Erik Ginnerskov (14-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 14-12-06 00:08

Jens Gyldenkærne Clausen wrote:

> Højreklik på linket, vælg kopier linkadresse, sæt det ind i
> adresselinjen og ret id-værdien. Det er uhyggelig let. Med POST-
> formularer er det mere besværligt, men stadig ikke umuligt.

Det lyder ikke rart. Nogen forslag til at hindre den slags (som ikke burde
kunne ske, da administrationsmodulet som tidligere nævnt ikke skal være
tilgængeligt for andre end administrator (hemmelig adresse))?

I øvrigt indgår der ikke nogen formular i slettefunktionen, kun i
tilføjefunktionen.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jens Gyldenkærne Cla~ (13-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-12-06 09:58

Erik Ginnerskov skrev:

> Det er naturligvis ikke meningen, at denne administrationsside
> skal være offentligt tilgængelig - admin only, hvilket jeg da
> også vil påpege, når jeg lægger funktionen ud. Så risikoen
> burde være overskuelig.

Det hjælper selvfølgelig på det - men det er i mine øjne stadig en
dårlig vane at anvende formdata, ikke mindst i en GET-formular,
uden validering. Med tanke på at dine sider er et (med rette)
populært sted for folk der skal lære forskellige
webdesignteknikker, mener jeg at det er ret uheldigt at vise en
teknik der potentielt kan volde store problemer for brugeren.

Det er ret simpelt at lave et basalt typetjek der sikrer mod sql-
injection - og selv om det (fx på grund af admin-login) måske ikke
altid er 100 % nødvendigt, kan man lige så godt vænne sig til at
gøre det konsekvent. Hvis man lægger eksempelkode ud til andre, er
det i særdeleshed vigtigt at følge "god skik" så man ikke får skabt
uheldige vaner for andre.


> Det var kun tænkt som en lettere måde at tilføje eller slette
> brugere end ved at skulle hente databasen hjem, redigere den i
> Access og så uploade basen igen.

Der er bestemt ikke noget galt med ideen med siden - altså at lave
online redigering (inkl. sletning) af basen. Man skal bare være
klar over at sikkerhedsspørgsmålet bliver mange gange vigtigere at
håndtere når man giver mulighed for at ændre data på siden.

> Der er slet ikke designet nogen mulighed for at inputte
> ulovlige data, så forkerte eller alle poster kan slettes.

Det er intet problem at rette i et link (se fx mit svar 9:15).
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Jens Gyldenkærne Cla~ (14-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-12-06 11:51

Erik Ginnerskov skrev:

>> Højreklik på linket, vælg kopier linkadresse, sæt det ind i
>> adresselinjen og ret id-værdien.

> Det lyder ikke rart. Nogen forslag til at hindre den slags

Niks - du ved selv at det ikke kan lade sig gøre at forhindre
højreklik.

Hvis det kører i et sikret admin-område, kan man måske leve med den
fejlmulighed der ligger i at der rettes i url'en (jeg vil dog
stadig anbefale at man sikrer sig mod egentlig sql-injection ved at
tjekke for et numerisk id).

Hvis flere personer skal have adgang til slette/rette-
forespørgsler, bør man have noget mere end et simpelt id som
identifikation. Det kan fx være et guid (et 128-bit nummer, typisk
angivet som en hex-streng a la: "3F2504E0-4F89-11D3-9A0C-
0305E82C3301". En simplere mulighed er at kombinere id med en
tilfældig kode (unik for hvert id). I begge tilfælde er målet at en
bruger der fx har lovlig adgang til fx edit.asp?id=42 ikke bare kan
rette id-nummeret og så få adgang til andre id-numre.

Guid-løsningen fungerer fordi der er ufatteligt mange
kombinationsmuligheder (det er over 10^38) og guid-numre genereres
random, så man kan ikke bare tage sig eget guid+1 og regne med at
det er en eksisterende post.


> I øvrigt indgår der ikke nogen formular i slettefunktionen,

Et link med en querystring-parameter er i en vis forstand også en
formular - bare uden direkte redigeringsmulighed.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (14-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 14-12-06 15:49

Jens Gyldenkærne Clausen wrote:

>> Nogen forslag til at hindre den slags
>
> Niks - du ved selv at det ikke kan lade sig gøre at forhindre
> højreklik.

Det var nu heller ikke lige det, jeg tænkte på.

> Hvis det kører i et sikret admin-område, kan man måske leve med den
> fejlmulighed der ligger i at der rettes i url'en

Jeg har lavet et forsøg med at lave et separat login til
administrationsmodulet. Det fungerer for så vidt, idet man ikke kan kalde
administrationssiden direkte - man bliver redirected til login-formularen.

Der er bare den "lille" mislyd, at hvis man er lovligt logget ind til nogle
andre sider (samme teknik men en anden database og andre - til
administrationen ugyldige - login-data), kan man godt komme ind på
administrationen uden lovligt login.

Login-tjekket øverst på siden ser sådan ud:

<%
If Session("blnIsUserGood") = False or IsNull(Session("blnIsUserGood")) =
True then
Response.Redirect"fejl.asp"
End If
%>

Forslag til, hvordan den mislyd kan fjernes, så kun gyldigt login til
administrationen giver adgang til administrationen?

> (jeg vil dog
> stadig anbefale at man sikrer sig mod egentlig sql-injection ved at
> tjekke for et numerisk id).

Det skulle vist komme med en skudsikker login, eller?

> Hvis flere personer skal have adgang til slette/rette-
> forespørgsler, bør man have noget mere end et simpelt id som
> identifikation.

Det er vi enige om, men det er langt ud over hvad jeg havde tænkt at lave.
Det skal fra min side være 'admin only' og hvis nogen vil udbygge det til et
flerbruger-system, må de selv konsultere gruppen for hjælp til det.

>> I øvrigt indgår der ikke nogen formular i slettefunktionen,
>
> Et link med en querystring-parameter er i en vis forstand også en
> formular - bare uden direkte redigeringsmulighed.

Så lærte jeg også lidt der.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Erik Ginnerskov (14-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 14-12-06 16:44

Erik Ginnerskov wrote:

> Der er bare den "lille" mislyd, at hvis man er lovligt logget ind til
> nogle andre sider (samme teknik men en anden database og andre - til
> administrationen ugyldige - login-data), kan man godt komme ind på
> administrationen uden lovligt login.

Den hurdle klarede jeg ved at omdefinere Session() i administrationen, så
det ikke er identisk med det andet login.

> <%
> If Session("blnIsUserGood") = False or
> IsNull(Session("blnIsUserGood")) = True then
> Response.Redirect"fejl.asp"
> End If
> %>

Ser nu sådan ud:

<%
If Session("blnIsUserOK") = False or
IsNull(Session("blnIsUserOK")) = True then
Response.Redirect"fejl.asp"
End If
%>

Tilsvarende rettelse blev lavet i login-scriptet.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (14-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 14-12-06 19:42

On Thu, 14 Dec 2006 16:43:45 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Erik Ginnerskov wrote:
>
>> Der er bare den "lille" mislyd, at hvis man er lovligt logget ind til
>> nogle andre sider (samme teknik men en anden database og andre - til
>> administrationen ugyldige - login-data), kan man godt komme ind på
>> administrationen uden lovligt login.
>
>Den hurdle klarede jeg ved at omdefinere Session() i administrationen, så
>det ikke er identisk med det andet login.

En anden mulighed, som jeg ofte bruger er at tildele hver bruger et
adgangsniveau - fx:
10: Læseadgang
30: Simpel redigering
90: Admin
Hver side - eller for så vidt enkeltfunktioner på siden - kan så
tillades afhængigt af brugerniveau.

<snip>
>If Session("blnIsUserOK") = False or
>IsNull(Session("blnIsUserOK")) = True then
>Response.Redirect"fejl.asp"
>End If

IsNull er vist ikke et særligt godt check.
Null er til database-værdier.
Hvis Session er tom, er den svjh Empty.

Igen får du et bedre check ved at bruge adgangsniveauer.


Good luck!

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (14-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 14-12-06 21:21

Jørn Andersen wrote:

> En anden mulighed, som jeg ofte bruger er at tildele hver bruger et
> adgangsniveau - fx:
> 10: Læseadgang
> 30: Simpel redigering
> 90: Admin
> Hver side - eller for så vidt enkeltfunktioner på siden - kan så
> tillades afhængigt af brugerniveau.

Jeg aner ikke en dyt om, hvordan man laver adgangsniveauer. Jeg googlede
lidt og fandt
http://www.google.dk/search?num=30&hl=da&newwindow=1&q=%22access+levels%22%2Basp&btnG=S%C3%B8g&meta=
som jeg lige vil kigge nærmere på.

> IsNull er vist ikke et særligt godt check.
> Null er til database-værdier.
> Hvis Session er tom, er den svjh Empty.

Det fungerer fint med IsEmpty, så den holder jeg mig til.

> Igen får du et bedre check ved at bruge adgangsniveauer.

Den database, jeg har knyttet til administrationen, har kun en registreret
bruger - administrator. Siden, der administrerer brugere, læser og redigerer
den oprindelige base, hvortil alle deri registrerede umiddelbart kun har
læseadgang for så vidt som at deres login-data bliver sammenlignet med data
i basen.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jørn Andersen (14-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 14-12-06 21:42

On Thu, 14 Dec 2006 21:21:09 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>Jørn Andersen wrote:
>> En anden mulighed, som jeg ofte bruger er at tildele hver bruger et
>> adgangsniveau - fx:
>> 10: Læseadgang
>> 30: Simpel redigering
>> 90: Admin
>> Hver side - eller for så vidt enkeltfunktioner på siden - kan så
>> tillades afhængigt af brugerniveau.
>
>Jeg aner ikke en dyt om, hvordan man laver adgangsniveauer.

Hvis du har en brugertabel (med fx brugernavn og hashet password),
tilføjer du bare et ekstra tal-felt i tabellen.

Når vedkommende logger ind, gemmes adgangsniveauet i en
Session-variabel. Denne variabel bruges så til at styre adgangen til
de enkelte sider.

<snip>
>Den database, jeg har knyttet til administrationen, har kun en registreret
>bruger - administrator.

Man skal selvfølgelig ikke skyde myg med missiler, men min erfaring
er, at man ofte får brug for flere brugere og brugerniveauer, end man
regnede med i starten ...

Good luck!

--
Jørn Andersen,
Brønshøj

Erik Ginnerskov (15-12-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 15-12-06 00:18

Jørn Andersen wrote:
> On Thu, 14 Dec 2006 21:21:09 +0100, "Erik Ginnerskov"

> Hvis du har en brugertabel (med fx brugernavn og hashet password),
> tilføjer du bare et ekstra tal-felt i tabellen.

Det var den nemme del, som jeg allerede har gjort. Nu skal jeg bare have
modificeret indskrivningen i basen, så jeg kan indsætte access level
samtidig med brugernavn og password - udskrivningen fra basen er kommet på
plads.

> Når vedkommende logger ind, gemmes adgangsniveauet i en
> Session-variabel. Denne variabel bruges så til at styre adgangen til
> de enkelte sider.

Hvordan definerer jeg så det nødvendige adgangsniveau til en side?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Jens Gyldenkærne Cla~ (14-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-12-06 22:51

Erik Ginnerskov skrev:

> If Session("blnIsUserOK") = False or
> IsNull(Session("blnIsUserOK")) = True then

Lille stilkommentar. Det er dobbeltkonfekt at bruge "= False" eller
"= True" i en sammenligning.
Dine to venstresider (Session("blnIsUserOK") og
IsNull(Session("blnIsUserOK")) evaluerer begge til en boolesk værdi
(sand eller falsk), så du kan lige så godt bruge dem direkte:

If (NOT Session("blnIsUserOK")) OR IsNull(Session("blnIsUserOK"))

Mere generelt gælder følgende:

If (X = False) <-> If (Not X)

If (X = True) <-> If (X)

If Y Then
   X = True
Else
   X = False
End IF    <-> X = Y
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408190
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste