Just nu i M3-nätverket
Gå till innehåll

Session-problem


Starre

Rekommendera Poster

Har lite problem med en session.

 

Jag har:

En sida med inloggninsformulär (login.asp)

En sida som kontrollerar detta (confirm.asp)

En sida som man via vanligt länk kan nå som inloggad (sida.asp)

 

Om jag nu loggar in och från confirm.aspklickar mig till sida.asp och klickar på browserns Bakåt-knapp är det inga problem. Jag kan uppdatera confirm.asp och jag är fortfarande inloggad. Fine. Men...

 

Om jag på sida.asp har en LÄNK tillbaka till confirm.asp och klickar på den så är jag plötsligt utloggad.

 

Varför?

 

Tack på förhand!

 

[inlägget ändrat 2002-09-29 16:40:44 av Starre]

Länk till kommentar
Dela på andra webbplatser

confirm.asp

<% Response.Expires = "0" %>
<html>

<% Session("username") = Request.Form("user")
  Session("password") = Request.Form("pass")

  If Session("username") = "stajag" AND Session("password") = "qwerty" Then

  Response.Write "Du &auml;r nu inloggad!<br>"
  Response.Write "Vill du se den aktuella tidpunkten? Klicka <a href=sida.asp>h&auml;r</a><br>"

  Else

  Response.Write "<h1>Felaktigt l&ouml;senord eller anv&auml;ndarnamn!</h1>"
  Response.Write "<h3><a href=login.asp>Var god försök igen</a></h3>"

  End If %>

</html>

 

Vill du ha de andra koderna också?

 

Länk till kommentar
Dela på andra webbplatser

Nä, det behövs inte.

 

Session("username") = Request.Form("user")

Session("password") = Request.Form("pass")

 

Innebär ju att du tar emot värden från ett formulär och lägger in i session-variablerna. Länkar du då till sidan från en annan sida utan att skicka med formulärdata så sätts ju sessionvariablerna till tomma strängar. Alltså kommer ditt IF-villkor inte att slå in utan du kommer till ELSE-delen.

 

/Niklas

 

 

Länk till kommentar
Dela på andra webbplatser

Jo, det låter ju väldigt logiskt men vet du hur man kan göra för att det här ska fungera i stället?

 

Annars känns ju hela grejen lite meningslös...

 

[inlägget ändrat 2002-09-29 20:55:01 av Starre]

Länk till kommentar
Dela på andra webbplatser

Varför ska du tillbaka till confirm.asp överhuvudtaget? Men du kan göra så här:

 

1. Lägg till ett hidden-fält på login.asp:

<input type="hidden" name="posted" value="1">

 

2. Kontrollera om den finns:

if request.form("posted") = 1 then

Session("username") = Request.Form("user")

Session("password") = Request.Form("pass")

end if

 

3. Lägg till din resterande kod därefter:

If Session("username") = "stajag" AND Session("password") = "qwerty" Then

 

Response.Write "Du &auml;r nu inloggad!<br>"

Response.Write "Vill du se den aktuella tidpunkten? Klicka <a href=sida.asp>h&auml;r</a><br>"

 

Else

 

Response.Write "<h1>Felaktigt l&ouml;senord eller anv&auml;ndarnamn!</h1>"

Response.Write "<h3><a href=login.asp>Var god försök igen</a></h3>"

 

End If %>

 

</html>

 

/Niklas

 

Länk till kommentar
Dela på andra webbplatser

Varför ska du tillbaka till confirm.asp överhuvudtaget?

 

Det är väl inte så konstigt. Om du som medlem loggar in kan du ju ha olika tjänster på olika sidor tillgängliga. Sedan måste du ju kunna ta dig tillbaka till förstasidan utan att bli utloggad.

 

Tack för koden. Det fungerade alldeles utmärkt!

 

Länk till kommentar
Dela på andra webbplatser

Jo, det är klart. Men jag brukar ha inloggningen på en egen sida utan andra funktioner än just att jämföra inloggningsuppgifterna med exempelvis en databas. När det är gjort slussas användaren vidare till en annan sida (typ startsida). Därför fattade jag det som att du skulle göra likadant ;o)

 

/Niklas

 

 

Länk till kommentar
Dela på andra webbplatser

Jo, det är ju naturligtvis det bästa.

 

Anledningen till att jag gjorde som jag gjorde vara att det var taget från en ASP-skola =)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...