Varför går det inte????
49 svar · 820 visningar · startad av Biasse · sida 2 av 3
Frågan, av Biasse
Databasen heter "admin" Tabellen heter "admin" Kolumerna heter: id ,anvname ,passw ,adm ,svip ,vip ,member i adm ,svip ,vip ,member står värderna i följd så här: adm=adm svip=supervip vip=vip member=member - <% Session.TimeOut=120 Set Connect = Server.CreateObject("ADODB.Connection") Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open
Läs frågan i sin helhet →Jag förstår inte meningen med det. Jag hade lagt in ett fält, som kan heta UserLevel eller liknande, där du bara markerar vilken nivå man är. Det räcker dessutom utmärkt bara att lagra heltal i ett sådant fält, om du själv bestämmer dig för att 1 är medlem, 2 är vip, 3 är svip och 4 är admin. Det räcker då bra med en sessionsvariabel som innehåller behörigheten.
jo jag har försökt det utan att lyckas....
om jag gör ett sånt fält då måste kontroll.asp skrivas om igen och hur styr jag det hela så adm ser allt och sen i stege ner.
Jag är bara glad om det kan bli enklare
Biasse skrev:
om jag gör ett sånt fält då måste kontroll.asp skrivas om igen och hur styr jag det hela så adm ser allt och sen i stege ner.
Jo, men det är ett väldigt litet problem. Istället för att kolla om RecSet("adm") innehåller texten adm, så kollar du om den innehåller en 4:a (om det nu är det talet du väljer.), osv.
Dessutom hade jag om jag var du, lagt till lösenordsjämförelsen i SQL-frågan. Det blir mindre kod, och det blir mindre krävande.
Mvh
Ok jag är med så långt men en sak förstår jag inte. Om jag loggar in som "4" (adm) hur ska jag då kunna se en sida som är skyddad för inloggning med 2??
Förstår du. Man måste ju formulera skyddet högst upp på en sida så att den kan ses av alla som har högre status än 2
Biasse skrev:
Ok jag är med så långt men en sak förstår jag inte. Om jag loggar in som "4" (adm) hur ska jag då kunna se en sida som är skyddad för inloggning med 2??
Enkelt svar med enkel kod:
If Cint(Session("UserLevel")) >=2 Then
' Wehoo, användaren har level 2 eller högre!
Else
' Nähä :(
End if
så här högst upp:
<%If Cint(Session("UserLevel")) >=2 Then
Session("mess") = "Du måste logga in först!"
Response.Redirect "index.asp"
ELSE%>
Jepp, det torde räcka alldeles utmärkt.
Fast du får då inte glömma bort att sätta sessionen userlevel till värdet i den nya kolumnen i tabellen, istället för alla andra sessioner du satte tidigare.
....
Om jag har detta på en adm sida:
<%If Cint(Session("UserLevel")) >=4 Then
Session("mess") = "Du måste logga in först!"
Response.Redirect "index.asp"
ELSE%>
Och loggar in på nivå 3 så går det att skriva index2.asp i adress fältet och komma in på den skyddade adm sidan ändå.
Ändrade till:
Session("check") = "111okkuk"
Session("passw") = "YtSQ12kuk"
Session("admin") = RecSet("UserLevel")
i kontroll och UserLevel i fältet och fältet(kolumen) i databasen
dom är bort nu men ändå återstår problemet med att de som har lägre rang bara kan skriva in url till skyddad sida på högre nivå och se den?
Gör du kontrollen överst på varje skyddad sida då?
<%
If NOT Cint(Session("UserLevel")) >=4 Then
Session("mess") = "Du måste logga in först!"
Response.Redirect "index.asp"
ELSE
%>
Vänder på det så att säga, samt att detta lär väl hindra även om man inte har en session över huvud taget.
/red. Iofs kan man ju då sätta en End If direkt och ta bort Else samt den End If som kommer längst ner på sidan...
Kommer inte in själv med denna fast jag är på nivå 4.
<%
If NOT Cint(Session("UserLevel")) >=4 Then
Session("mess") = "Du måste logga in först!"
Response.Redirect "index.asp"
ELSE
%>
Jag har <%end if%> längst ner.
Vad ger en utskrift av din session då?
<%
response.write Cint(Session("UserLevel"))
If NOT Cint(Session("UserLevel")) >=4 Then
Session("mess") = "Du måste logga in först!"
'Response.Redirect "index.asp"
ELSE
%>
0 ???? enda som står på index2.asp
Då förefaller det ju inte som om det verkligen står 4 i din session...
Vad kallar du din session egentligen? http://www.webforum.nu/showthread.php?s=&postid=707895#post707895
