Avatar billede frank74 Nybegynder
31. maj 2006 - 20:22 Der er 35 kommentarer og
1 løsning

Session. Hvordan??

Ideen med følgende script er naturligvis at nå man ikke er logget ind er der et link til siden hvor man logger ind.
Når man så er logget ind skal der være et link (Logout) til at logge ud.
Hvordan gør jeg det??

<%
If Not Session("UserID") <> "" THEN%>
<a HREF="../ADMIN/index.asp" target="middle">login</a>
<%
Else
%>
ANER IKKE HVAD DER SKAL STÅ HER...
<%
End If
%>
Avatar billede apo Praktikant
31. maj 2006 - 20:27 #1
Normalt fungerer det sådan:

<%
'INDSÆTTES ØVERST PÅ DE SIDER, SOM SKAL HAVE ADGANGSKONTROL
If Session("UserID") <> "1" Then
  Response.Redirect "../ADMIN/index.asp"
End If
%>

- Hvis sessionen 'UserID' ikke indeholder '1', viderestilles man til login-siden. Hvis sessionen 'UserID' _indeholder_ '1' viderestilles man ikke til login-siden, og kan derfor se indholdet af siden.

Ovenstående kode skal så placeres øverst på alle de sider, du vil have adgangskontrol på.
Avatar billede apo Praktikant
31. maj 2006 - 20:29 #2
... Logout-linket kan du så passende have i en menu på alle de sider, der er adgangskontrol på :-)
Avatar billede frank74 Nybegynder
31. maj 2006 - 20:34 #3
Det er ikke helt det jeg mener.
På toppen af siden skal der være en knap der hedder Login. Når man trykker på det kommer man til siden hvor man logger ind. Har man gjort det korrekt skal login knappen ændre sig til en logud knap i stedet for.
Avatar billede apo Praktikant
31. maj 2006 - 20:36 #4
Måske misforstod jeg dig.

<%
' HVIS SESSION = 1
If Session("UserID") = "1" Then
  Response.Write "<a href="../ADMIN/Logout.asp" target="middle">logout</a>"
Else
' HVIS SESSION <> 1
  Response.Write "<a href="../ADMIN/index.asp" target="middle">login</a>"
End If
%>

Ovenstående kode vil vise et logout-link når du er logget ind, og et login-link når du ikke er logget ind.
Avatar billede apo Praktikant
31. maj 2006 - 20:38 #5
Var det sådan, du mente?
Avatar billede frank74 Nybegynder
31. maj 2006 - 20:42 #6
Ja. Men det du har skrevet virker ikke.
Desuden skal der ikke henvises til en anden side ved Logout. Der skal jeg bruge en Session.abandon på en eller anden måde...
Avatar billede apo Praktikant
31. maj 2006 - 20:49 #7
Hvordan virker det ikke? Det burde virke.

Min sidste kode viderestiller ikke til andre sider men viser et bestemt link alt efter om, Session("UserID") er '1' eller ej.

Du kan f.eks. lave en side kaldet 'logout.asp' med følgende indhold:

<%
' SLETTER INDHOLD AF SESSION("USERID")
  Session("UserID") = ""
' VIDERESTILLER TIL LOGIN-SIDEN
  Response.Redirect "="../ADMIN/index.asp"
%>

Når du klikker på: <a href="../ADMIN/Logout.asp" target="middle">logout</a> vil du blive viderestillet til logout-siden, der sletter Session("UserID") og viderestiller til login-siden.

Er det ikke sådan, du vil have det?
Avatar billede apo Praktikant
31. maj 2006 - 20:50 #8
Fejl...

<%
' SLETTER INDHOLD AF SESSION("USERID")
  Session("UserID") = ""
' VIDERESTILLER TIL LOGIN-SIDEN
  Response.Redirect "../ADMIN/index.asp"
%>

Sådan.
Avatar billede apo Praktikant
31. maj 2006 - 20:52 #9
Ellers prøv, at beskrive (kort) hvordan dit login-modul er opbygget.
Avatar billede frank74 Nybegynder
31. maj 2006 - 20:52 #10
Jeg har fået dette til at virke:

<%
If Not Session("UserID") <> "" THEN
%>
<a HREF="../ADMIN/index.asp" target="middle"><i>login</i></a>
<%
Else
%>
<a HREF="midt.asp" target="middle"><i>logout</i></a>
<%
End If
%>

Jeg har så bare lagt en Session.abandon på midt.asp siden og det virker fint. Problemet er bare at jeg er nør til at trykke på "opdater siden" for at få Login/Logout til at skifte. Hvordan klarer jeg så den??
Avatar billede apo Praktikant
31. maj 2006 - 21:21 #11
Jeg arbejder lige på det... :-)
Avatar billede frank74 Nybegynder
31. maj 2006 - 21:25 #12
Det er bare ok. ;-)
Avatar billede apo Praktikant
31. maj 2006 - 21:32 #13
Prøv denne:

<%
If Session("UserID") <> "" THEN
    ' VISER LOGIN-LINK HVIS USERID = ""
    Response.Write "<a href=""" & Request.ServerVariables("SCRIPT_NAME") & "?Logout=Yes"" target=""middle""><i>logout</i></a>"
Else
    ' VISER LOGOUT-LINK HVIS USERID <> ""
    Response.Write "<a href=""" & Request.ServerVariables("SCRIPT_NAME") & """ target=""middle""><i>login</i></a>"
End If

If Request.QueryString("Logout") = "Yes" Then
    ' SLETTER ALLE SESSIONS
    Session("UserID") = ""
    ' VIDERESTILLER TIL DEN AKTUELLE SIDE
    Response.Redirect Request.ServerVariables("SCRIPT_NAME")
End If
%>
Avatar billede frank74 Nybegynder
31. maj 2006 - 21:44 #14
Jeg er ked af at sige det, men det virker altså ikke.
"The page cannot be displayed"
Avatar billede apo Praktikant
31. maj 2006 - 21:46 #15
Jeg fik rodet lidt rundt (det er svært når jeg skal teste det i et lukket miljø uden, at kunne logge rigtigt ind :-/). Denne burde virke:

<%
If Session("UserID") <> "" THEN
    ' VISER LOGOUT-LINK
    Response.Write "<a href=""" & Request.ServerVariables("SCRIPT_NAME") & "?Logout=Yes" target=""middle""><i>logout</i></a>"
Else
    ' VISER LOGIN-LINK
    Response.Write "<a href=""../ADMIN/index.asp"" target=""middle""><i>login</i></a>"
End If

' LOGGER UD, OG OPDATERER SIDEN
If Request.QueryString("Logout") = "Yes" Then
    ' SLETTER SESSION("USERID")
    Session("UserID") = ""
    ' OPDATERER DEN AKTUELLE SIDE
    Response.Redirect Request.ServerVariables("SCRIPT_NAME")
End If
%>
Avatar billede apo Praktikant
31. maj 2006 - 21:50 #16
Aaargh... Og så glemte jeg at 'quote' korrekt :-/

<%
If Session("UserID") <> "" THEN
    ' VISER LOGOUT-LINK
    Response.Write "<a href=""" & Request.ServerVariables("SCRIPT_NAME") & "?Logout=Yes"" target=""middle""><i>logout</i></a>"
Else
    ' VISER LOGIN-LINK
    Response.Write "<a href=""../ADMIN/index.asp"" target=""middle""><i>login</i></a>"
End If

' LOGGER UD, OG OPDATERER SIDEN
If Request.QueryString("Logout") = "Yes" Then
    ' SLETTER SESSION("USERID")
    Session("UserID") = ""
    ' OPDATERER DEN AKTUELLE SIDE
    Response.Redirect Request.ServerVariables("SCRIPT_NAME")
End If
%>
Avatar billede apo Praktikant
31. maj 2006 - 21:53 #17
Ovenstående burde være der nu...
Avatar billede frank74 Nybegynder
31. maj 2006 - 21:54 #18
Stadig fejl.
Lige omkring her -> "SCRIPT_NAME") & "?Logout=Yes"
"Expected end of statement"
Avatar billede apo Praktikant
31. maj 2006 - 21:55 #19
Også med den sidste?
Avatar billede frank74 Nybegynder
31. maj 2006 - 21:55 #20
Yep
Avatar billede apo Praktikant
31. maj 2006 - 21:59 #21
Nu _skal_ den altså være der:

<%
If Session("UserID") <> "" THEN
    ' VISER LOGOUT-LINK
    Response.Write "<a href=""" & Request.ServerVariables("SCRIPT_NAME") & "?Logout=Yes"" target=""middle""><i>logout</i></a>"
Else
    ' VISER LOGIN-LINK
    Response.Write "<a href=""../ADMIN/index.asp"" target=""middle""><i>login</i></a>"
End If

' LOGGER UD, OG OPDATERER SIDEN
If Request.QueryString("Logout") = "Yes" Then
    ' SLETTER SESSION("USERID")
    Session("UserID") = ""
    ' OPDATERER DEN AKTUELLE SIDE
    Response.Redirect Request.ServerVariables("SCRIPT_NAME")
End If
%>

Det var endnu en quote-fejl...
Avatar billede apo Praktikant
31. maj 2006 - 22:00 #22
Nope, det er eksperten, der fjerner nogle af mine quotes (anførselstegn '"')

Jeg laver den uden quotes, så. Øjeblik.
Avatar billede apo Praktikant
31. maj 2006 - 22:03 #23
Eller du kan selv tilføje dem:

Response.Write "<a href=""" & Request.ServerVariables("SCRIPT_NAME") & "?Logout=Yes" <-- Her skal du sætte 1 anførselstegn.

Response.Write "<a href=""../ADMIN/index.asp" <-- Og her endnu 1 anførselstegn.
Avatar billede frank74 Nybegynder
31. maj 2006 - 22:07 #24
Nu får jeg fejl i denne linie:
Response.Write "<a href=""../ADMIN/index.asp" target=""middle""><i>login</i></a>""
Avatar billede apo Praktikant
31. maj 2006 - 22:08 #25
Der mangler du også at sætte et anførselstegn; efter: =""../ADMIN/index.asp" <-- Her
Avatar billede apo Praktikant
31. maj 2006 - 22:09 #26
... Og så har du sat et anførselstegn forkert: <i>login</i></a>"" <-- Fjern det sidste.
Avatar billede frank74 Nybegynder
31. maj 2006 - 22:16 #27
Så virker det. Bare ikke når jeg skal logge ud. Så åbner den et nyt vindue med siden hvor min login/logout knap er placeret...
Avatar billede frank74 Nybegynder
31. maj 2006 - 22:18 #28
Desuden, når jeg logger ind er jeg nød til at trykke på "Opdater siden" før login linket skifter til logout...
Avatar billede apo Praktikant
31. maj 2006 - 22:19 #29
Hvad bruger du: target="middle" til?
Avatar billede apo Praktikant
31. maj 2006 - 22:22 #30
Det er svært for mig, at sætte mig ind i hvordan det fungerer hos dig når jeg ikke kan se det. Har du evt et link?
Avatar billede frank74 Nybegynder
31. maj 2006 - 22:23 #31
Siden er bygget med 2 frames "top" og "middle". Login/logout linket er i toppen sammen med et logo og en menu. Resten foregår i "middle"
Avatar billede apo Praktikant
31. maj 2006 - 22:30 #32
Frames er heller ikke det bedste at bruge, hvis du spørger mig. Generelt holder jeg mig langt væk fra alle former for frames da det ofte bliver for bøvlet at arbejde med.

Koden virker fint hos mig (uden at skulle opdatere vinduet) - men jeg bruger ikke frames.

Hmm... Jeg ved ikke lige hvordan jeg skal hjælpe dig videre da jeg ikke har nogen forslag til hvordan du kan få det til at virke med frames. Desværre :-/
Avatar billede frank74 Nybegynder
31. maj 2006 - 22:32 #33
Det er også ok. Du har hjulpet meget.
Smid et svar, så jeg kan få lukket dette spørgsmål. :-)
Avatar billede apo Praktikant
31. maj 2006 - 22:36 #34
Jeg kan ikke tage imod points når jeg ikke kan hjælpe dig hele vejen. Ellers tak :-)
Avatar billede apo Praktikant
03. juni 2006 - 11:04 #35
Husk, at lukke spørgsmålet ved, at tage pointene selv.
Avatar billede frank74 Nybegynder
15. juni 2006 - 20:59 #36
Jamen det gør jeg da så. :-)
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