Avatar billede emingos Nybegynder
03. maj 2002 - 01:07 Der er 21 kommentarer og
1 løsning

sessions i asp script...

hejsa
jeg er ved at lave en sektion på min hjemmeside med admin osv..

jeg har lavet add/slet brugere..
og login ..
(brugernavne og passwords bliver hentet fra database)

nu var det jeg har hørt så meget om sessions..

fks. alle som er logged ind .. ska skrives på en onlineliste ,,
og så skal webmaster,admin blive smidt ind på en side
mens normale brugere på en anden,,
og brugere som slet ik er logged ind ska bare se standard siden..

jeg har fulgt div. toturials,guides,faq's men jeg er åbenbart for dum :/

jeg ved det ska gøres med sessions.. og global.asa (efter hvad jeg har læst)

men jeg forstår simpelt hen minus...

hvis en af jer kan lave koden... eller give en rigtig god newbie forklaring så ville det være fedt..

da dette er det eneste jeg mangler til min side er jeg ville til at give gode points

altså kommer i med et eksempel eller en kode jeg kan få til at virke kan det være jeg bliver så glad jeg smider 100 eller flere points i puljen :)

håber i kan hjælpe

mvh. emingos
Avatar billede excession Nybegynder
03. maj 2002 - 01:23 #1
det der er med sessions er at når en bruger kommer ind på dit domæne bliver der automatisk oprettet en session

den session kan du få adgang til med ASP

Når en bruger så logger på kan du først checke om brugeren er en admin eller webmaster eller alm. bruger.  du kan så sætte nogle værdier i hans/hendes session

IF bruger = "admin" THEN
Session("admin") = "ja"
ELSE
Session("admin") = "nej"
END IF

Her checkes der for at se om brugeren er admin eller ej... hvis han er så laver vi en session variable der admin og giver den en værdi.

Hvis du så som admin gerne vil ændre noget i admin området kan du checke på den/de sider om der finder en session der hedder Session("admin") = "ja" hvis der gør kan han få lov at bruge siden.  hvis ikke, kan du smide brugeren hen til forside..

I bund og grund bruges bruge sessions mest til at gemme info om brugeren som du så kan bruge i din scripts.

Sessions kan ses og bruges på alle dine sider på sitet.

hvis du kommer med din kode som bruges til login kan jeg lige vise dig et par eksempler med sessions

-- xs
Avatar billede kotelet Nybegynder
03. maj 2002 - 01:38 #2
session er RØV nemt :-) ... skriv f.eks.

session("hvadsidderderpaalorte") = "fluer"

Nu kan serveren genkende dig frem for alle de andre maskiner der besøger siden. Så hvis en side f.eks. vil se om du har logget på, så tjekker den om din session er i orden. sådan:

IF session("hvadsidderderpaalorte") = "" THEN
response.write "Din slambert! Du er ikke logget ind!"
END IF
IF session("hvadsidderderpaalorte") = "fluer" THEN
response.write "Herligt at se dig kære administrator"
END IF


For at bruge dit login gør du bare således først i din fil:

IF request.form("password") = "det_rigtige_password" THEN
session("hvadsidderderpaalorte") = "fluer"
ELSE
session("hvadsidderderpaalorte") = Nothing
END IF

IF session("hvadsidderderpaalorte") = "" THEN
response.write "Din slambert! Du er ikke logget ind!"
END IF
IF session("hvadsidderderpaalorte") = "fluer" THEN
response.write "Herligt at se dig kære administrator"
' evt. noget med response.redirect til en admin-side.
END IF


pointen er at du heletiden kan bestemme hvad en bruger skal se hvis han har sit sesion i orden eller ej.

Man kan f.eks også oprette flere grader af brugere
session("type") = 1
session("type") = 2
session("type") = 3
osv..
Avatar billede kotelet Nybegynder
03. maj 2002 - 01:41 #3
Ah.. Og for at logge nogen UD igen skriver du

Session.abandon

og for at bestemme hvor lang tid brugeren er online skriver du

session.timeout = 15 ' hvor 15 er antallet af minutter som serveren skal huske dig.

Kig evt. på http://www.html.dk for en rigtig god begynder tutorial på sessions. (Den ligger selvfØLelig under ASP)
Avatar billede sukos Juniormester
03. maj 2002 - 02:12 #4
BAre en kommentsr:
I PHP er $hvadsidderderpaalorte = session_id();
Avatar billede emingos Nybegynder
03. maj 2002 - 14:41 #5
hm.. jeg har et login script vil jeg så kunne bruge det her i det?....
og hvordan fortæller jeg sessionen at det er mig og ik en anden...
Avatar billede emingos Nybegynder
03. maj 2002 - 14:44 #6
mit login ser sådan her ud :


<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
    ' Her forberedes de indtastede værdier til validering
    strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
    strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    ' Hvis der er skrevet noget i både brugernavn og adgangskode
    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        ' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("dtabase.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT UserID FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("UserID")
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Du blev ikke godkendt af systemet"
        End If

        ' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

        If Len(intUID) Then
            ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
            Session("UserID") = intUID
            Response.Redirect("main.asp")
        End If
    Else
        ' Hvis der ikke var angivet brugernavn og adgangskode
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        ' Her laves fejlmeddelsen om til rød skrift
        strErr = "<p><font color=red>" & strErr & "</font></p>"
    End If
End If
%>
<html><head>
<title>Login script</title>
</head><body>
<form method="POST" action="login.asp">
  <p><font size="2">Angiv brugernavn og adgangskode</font></p><%=strErr%>
  <table border="0">
    <tr>
      <td width="50%">Brugernavn:</td>
      <td width="50%"><input type="text" name="Brugernavn" size="20"></td>
    </tr>
    <tr>
      <td width="50%">Adgangskode:</td>
      <td width="50%"><input type="password" name="Adgangskode" size="20">
        </td>
    </tr>
  </table>
  <p><input type="submit" value="Login" name="Action"></p>

</form>
</body></html>
Avatar billede emingos Nybegynder
03. maj 2002 - 14:48 #7
hvordan ska koden se ud.. ikke "hvadsiderderpålorte" men den rigtige kode og hvordan laver jeg 3 brugere i sessions .. 1 admin 1 bruger 1 guest ?
Avatar billede emingos Nybegynder
03. maj 2002 - 14:51 #8
hvis jeg nu sætter IF request.form("password") = "det_rigtige_password" THEN
session("hvadsidderderpaalorte") = "fluer"
ELSE
session("hvadsidderderpaalorte") = Nothing
END IF

IF session("hvadsidderderpaalorte") = "" THEN
response.write "Din slambert! Du er ikke logget ind!"
END IF
IF session("hvadsidderderpaalorte") = "fluer" THEN
response.write "Herligt at se dig kære administrator"
' evt. noget med response.redirect til en admin-side.
END IF
ind i mit login så virker det ikke.. ?
Avatar billede emingos Nybegynder
03. maj 2002 - 15:00 #9
har læst den på html.dk synes ik der stod det vilde om sessions..
Avatar billede tmceu Praktikant
03. maj 2002 - 17:06 #10
Et par ting du skal være opmærksom på, når du arbejder med sessions:

Session_OnEnd (i global.asa) som køres når en session enten afsluttes explicit med session.abandon eller når den timer ud, er ikke garanteret til at køre altid. Det betyder at eks. en "online brugere" funktion, til tider vil vise for mange brugere. Jeg har læst flere (uvidenskabelige) analyser/tests, der alle påviser at Session_OnEnd kun kører i ca. 95% af alle tilfælde.

Session.SessionID er ikke garanteret unik på tværs af server genstart og du bør derfor aldrig bruge den som GUID i din database.

Mht. din kode, venligst vis hvordan den ser ud efter du har lavet dine rettelser...
Avatar billede firehat Nybegynder
03. maj 2002 - 17:24 #11
Du kan lære det hele på:
www.html.dk/tutorials/asp
Der er også noget om sessions!
Avatar billede emingos Nybegynder
03. maj 2002 - 19:27 #12
Kommentar fra emingos
03/05-2002 15:00:21    har læst den på html.dk synes ik der stod det vilde om sessions..  <-- hvorfor tror du jeg skriver det ???...
Avatar billede firehat Nybegynder
03. maj 2002 - 21:41 #13
Upsa, havde lige overset det!
Avatar billede kotelet Nybegynder
03. maj 2002 - 21:52 #14
Det er faktisk ikke så besværligt som du tror :-) Altså... Du bliver først og fremmest nødt til enten at have noget i databasen eller på siden der stiller et kriterie for hvornår man er guest, bruger eller administrator.

Lad mig foreslå et alternativt script som du selv kan redigere i efter eget ønske:


<%
IF request.form("Action") <> "" THEN
'Hvis der er blevet submittet så kør resten af scriptet

Set Conn = Server.CreateObject("ADODB.Connection")                       
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DDBQ=" & Server.MapPath("database.mdb")

Conn.Open DSN                                                           
strSQL = "SELECT * FROM tabel where Brugernavn = '"& request.form("brugernavn") &"'"
Set rs = Conn.Execute(strSQL)       

IF rs.EOF THEN
    Response.write "Der findes ingen brugere med det valgte brugernavn!"
ELSE
    DO WHILE NOT rs.EOF
        IF rs("Adganskode") = request.form("adganskode") THEN
            ' Brugernavn + pass passer sammen.
            IF request.form("Brugernavn") = "Administrator_navn1" OR request.form("Brugernavn") = "Administrator_navn2" THEN
                ' listen kan fortsættes
                session("usertype") = "Admin"
            ELSE IF request.form("Brugernavn") = "NormalBruger1" OR request.form("Brugernavn") = "NormalBruger2" THEN
                    ' listen kan fortsættes
                    session("usertype") = "Bruger"
                ELSE
                    session("usertype") = "Guest"
                END IF
            END IF
        END IF
    rs.Movenext
    LOOP
Response.write "Velkommen <b>"&request.form("brugernavn")&"</b>, du er logget ind i systemet som <b>"&session("usertype")&"</b>"
END IF
END IF

IF request.form("action") = "" THEN
%>

<html>
<head>
<title>Login script</title>
</head>
<body>
<form method="POST" action="login.asp">
  <p><font size="2">Angiv brugernavn og adgangskode</font></p>
  <table border="0">
    <tr>
      <td width="50%">Brugernavn:</td>
      <td width="50%"><input type="text" name="Brugernavn" size="20"></td>
    </tr>
    <tr>
      <td width="50%">Adgangskode:</td>
      <td width="50%"><input type="password" name="Adgangskode" size="20">
        </td>
    </tr>
  </table>
  <p><input type="submit" value="Login" name="Action"></p>

</form>
</body></html>
<% END IF %>


------------------------

Du kan så selv indsætte de brugernavne i scriptet som du mener skal være admins eller hele brugere. Alle der ikke er anført som enten brugere eller admind, vil blive logget ind som guests.

DU kan også lave en database løsning hvor der står i databasen om din user er admin eller ej. På den måde kan du lettere lave en længere liste af brugere eller admins + det bliver lettere at tilføje sådan nogle senere. Jeg kan godt lave det til dig hvis du smider lidt flere point i :-)
Avatar billede emingos Nybegynder
04. maj 2002 - 14:08 #15
hmmm... nu har jeg ændret det til min det passer i min database... men den siger

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E4E)
Operation was canceled.
/login.asp, line 9


hmm? jeg kan ik lige finde fejlen

det ser sådan her ud efter jeg har rettet det...


<%
IF request.form("Action") <> "" THEN
'Hvis der er blevet submittet så kør resten af scriptet

Set Conn = Server.CreateObject("ADODB.Connection")                       
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DDBQ=" & Server.MapPath("cm.mdb")

Conn.Open DSN                                                           
strSQL = "SELECT * FROM users where username = '"& request.form("username") &"'"
Set rs = Conn.Execute(strSQL)       

IF rs.EOF THEN
    Response.write "Der findes ingen brugere med det valgte brugernavn!"
ELSE
    DO WHILE NOT rs.EOF
        IF rs("username") = request.form("password") THEN
            ' Brugernavn + pass passer sammen.
            IF request.form("username") = "emingos" OR request.form("username") = "invader" THEN
                ' listen kan fortsættes
                session("usertype") = "Admin"
            ELSE IF request.form("username") = "NormalBruger1" OR request.form("username") = "NormalBruger2" THEN
                    ' listen kan fortsættes
                    session("usertype") = "Bruger"
                ELSE
                    session("usertype") = "Guest"
                END IF
            END IF
        END IF
    rs.Movenext
    LOOP
Response.write "Velkommen <b>"&request.form("username")&"</b>, du er logget ind i systemet som <b>"&session("usertype")&"</b>"
END IF
END IF

IF request.form("action") = "" THEN
%>

<html>
<head>
<title>Login script</title>
</head>
<body>
<form method="POST" action="login.asp">
  <p><font size="2">Angiv brugernavn og adgangskode</font></p>
  <table border="0">
    <tr>
      <td width="50%">Brugernavn:</td>
      <td width="50%"><input type="text" name="username" size="20"></td>
    </tr>
    <tr>
      <td width="50%">Adgangskode:</td>
      <td width="50%"><input type="password" name="password" size="20">
        </td>
    </tr>
  </table>
  <p><input type="submit" value="Login" name="Action"></p>

</form>
</body></html>
<% END IF %>
Avatar billede emingos Nybegynder
04. maj 2002 - 14:08 #16
usertype har ik nogen med databasen at gøre ? eller...
Avatar billede spiers Nybegynder
04. maj 2002 - 15:42 #17
Emingos. Det er helt sikkert skærmen der er noget galt med.

Det er fordi at skærmen ikke kan spille mp3 der er over 3.89 mb store.

Der har du dit svar.

//Hawkeye -- LALA TRÆSPRIT :)
Avatar billede emingos Nybegynder
04. maj 2002 - 15:43 #18
lol..
Avatar billede samserver Nybegynder
04. maj 2002 - 15:44 #19
eller også er det bare fordi du ikke har forstået de 10 nud....

har denne tråd ikke mistet sin seriøitet :?
Avatar billede spiers Nybegynder
04. maj 2002 - 15:45 #20
Du skal da ikke bare stå der og grine.. GIV MIG SÅ DE POINTS!! Eller jeg var en en bjerg-nisse til at bede julle-manden om at undlade gaver til emingos.
Avatar billede samserver Nybegynder
04. maj 2002 - 15:45 #21
bud*
Avatar billede samserver Nybegynder
04. maj 2002 - 15:45 #22
LOL!!
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