Avatar billede want2learn Nybegynder
24. december 2003 - 02:15 Der er 17 kommentarer og
1 løsning

sessions spm.

jeg har dette til et login system:

<%
if Session("name") = "" then
    Response.Redirect("login.asp")
else
%>

det virker perfekt har så bare lige udvidet det med et felt i min tabel så det bliver lidt niveau ind delt på nogle af siderne.

feltet hedder UserNiveau og det kan være administrator, prouser eller user.

mit spm er nu om man kan lave en AND i en sessions evt som dette:

<%
if Session("name") = "" and Session("UserNiveau") <> "administrator" or session("UserNiveau") = "prouser" or Session("UserId") = "" then
    Response.Redirect("login.asp")
else
%>

så den kigger på ens logind navn og hvilket Niveau man er på så den ikke logger brugerer af
"user" niveau ind på den side hvor code evt kan være hvor kun administrator og prouser profiler må komme ind !!

eller skal det laves anderledes !??
Avatar billede neoo Nybegynder
24. december 2003 - 02:25 #1
jeg har tidligere stødt ind på et færdigt login hos www.activeserverpages.dk, prøv at hente den :) og se på det
Avatar billede neoo Nybegynder
24. december 2003 - 02:26 #2
glemte at nævne at den også handlede om flere niveau bruge adgang
Avatar billede want2learn Nybegynder
24. december 2003 - 02:31 #3
okay har du evt et navn på det eller sådan noget !??
Avatar billede gurvic Nybegynder
24. december 2003 - 12:02 #4
Ja jeg har selv haft gjordt det på den måde, dog delte jeg op i flere if-sætninger, så først tjekkes om man er logget ind og så bagefter hvilket niveau man er på, det virker helt perfekt
Avatar billede eagleeye Praktikant
24. december 2003 - 12:09 #5
Du skal huske på at AND bliver udført før OR:

if Session("name") = "" and Session("UserNiveau") <> "administrator" or session("UserNiveau") = "prouser" or Session("UserId") = "" then


Du kan sætte () omrking or ledne og se om det ikke er sådan det skal være??:

if Session("name") = "" and (Session("UserNiveau") <> "administrator" or session("UserNiveau") = "prouser" or Session("UserId") = "") then


Du skal også huske at if på tekst er casesenativ så "administrator" er ikke lig "Administrator".

Det med AND og OR kan man huske hvis man tænker lidt på matematik og * er AND og + er OR der er det heller ikke lige meget hvordan man skriver det:
4*2+1 = 9
4*(2+1) = 12
Avatar billede want2learn Nybegynder
24. december 2003 - 12:39 #6
okay jeg har brugt din sidste linje Eagleeye og logget på med en user Niv. konto og den bliver alligevel logget ind på statssite.asp hvilket den ikke skulle !!
Hvordan kan jeg gøre så det kun er admins og poruser det kommer ind på denne side !?

ved ikke om denne side har noget med det at gøre:

verify.asp
<%
   
    uid = Request.Form("username")   
    pass = Request.Form("password")
   
    if uid = "" then Response.redirect("error/empty.asp")
    if pass = "" then Response.Redirect("error/empty.asp")
   
    set conn = server.CreateObject ("ADODB.Connection")       
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath ("include/db/userinfo.mdb")
    set rs = server.CreateObject ("ADODB.Recordset")       
    rs.Open "SELECT * FROM userdatabase where UserNick='"& uid &"'", conn, 1
   
    If rs.recordcount = 0 then
        rs.close
        conn.close
        set rs=nothing
        set conn=nothing
        Response.Redirect("login_id.asp")
    end if
   
        if rs("UserPassword") = pass then
        Session("name") = rs("UserNick")
        rs.Close
        conn.Close
        set rs=nothing
        set conn=nothing
        Response.Redirect("statesite.asp")
   
    else
        rs.Close
        conn.Close
        set rs=nothing
        set conn=nothing
        Response.Redirect("login_pw.asp")
    end if   

%>

den side sendes man til når man logger på og derefter sender den en til statesite.asp hvis man er logget på rigtigt.

men skal jeg evt bruge denne statesite.asp til alle brugerer og så de sider hvor kun admins og prouser kontoer skal kunne komme på der evt bruge dette og glemme session name:

if Session("UserNiveau") <> "administrator" or session("UserNiveau") = "prouser" or Session("UserId") = "" then
Response.Redirect("noacces.asp")
else


??
Avatar billede eagleeye Praktikant
24. december 2003 - 12:43 #7
Så prøv:

if Session("UserNiveau") <> "administrator" and session("UserNiveau") <> "prouser" then
Avatar billede want2learn Nybegynder
24. december 2003 - 13:02 #8
hvis jeg har den linje på siden kan jeg overhovedet ikke logge ind den sendet mig bare til login.asp
Avatar billede eagleeye Praktikant
24. december 2003 - 13:04 #9
ja kan heller ikke lige se hvor du gemmer UserNiveau i session når man logger ind er en som gemmer name:

Session("name") = rs("UserNick")
Avatar billede want2learn Nybegynder
24. december 2003 - 13:09 #10
ja men skal den evt laves om til UserNiveau istedet for !??
Avatar billede eagleeye Praktikant
24. december 2003 - 13:27 #11
Nej du skal vel bare havde tilføjet UserNiveau

        if rs("UserPassword") = pass then
        Session("name") = rs("UserNick")
        Session("UserNiveau") = rs("UserNiveau")
        rs.Close
        conn.Close
        set rs=nothing
        set conn=nothing
        Response.Redirect("statesite.asp")
Avatar billede eagleeye Praktikant
24. december 2003 - 13:36 #12
så du stadig kan bruge Session("name") hvis du vil udskrive det :)
Avatar billede want2learn Nybegynder
24. december 2003 - 13:36 #13
ja det gjorder jeg lige og så satte jeg dette ind på statssite.asp

<%
if Session("name") = "" or Session("niv") = "user" then
    Response.Redirect("login.asp")
else
%>

og så virker det !!

men lige en lille ting kan jeg dele

<%
if Session("name") = "" or Session("niv") = "user" then
    Response.Redirect("login.asp")
else
%>

op så hvis name = "" så sender den mig til login.asp og hvis niv = "user" så sender den mig til noaccess.asp og else som den gør nu.

og ANG. Session("niv") = "user" hvis jeg vil have at prouser ikke skal kunne komme på siden også kan jeg så lave denne sessions til Session("niv") = "user,prosuser"  !??  lægger lige flere P på hvis det er og så læg venligst et svar !!
Avatar billede eagleeye Praktikant
24. december 2003 - 13:40 #14
Ja du kan lave det om til en if then elseif eks:

if Session("name") = "" then
  Response.Redirect("login.asp")
elseif Session("niv") = "user" then
  Response.Redirect("noaccess.asp")
else
%>
Avatar billede eagleeye Praktikant
24. december 2003 - 13:41 #15
Du kan ikke skrive flere ting Session("niv") = "user,prosuser" du må lave det som to

if Session("niv") = "user" or Session("niv") = "prosuser" then
Avatar billede want2learn Nybegynder
24. december 2003 - 13:42 #16
okay jeg takker og vil du lægge et svar !!
Avatar billede eagleeye Praktikant
24. december 2003 - 13:43 #17
Ja det vil jeg da meget gerne ;)
Du må havde en god jul ;)
Avatar billede want2learn Nybegynder
24. december 2003 - 13:45 #18
jeg takker igen og ilm ;)
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