Avatar billede johnleif Nybegynder
19. september 2005 - 15:20 Der er 17 kommentarer

Problem med sessions

Jeg er simpelthen ved at få grå hår...
Jeg er ved at lave en side der skal håndtere 2 forskellige sprog.
Sprog ligger i database, og skal hentes, afhængigt af det ønskede sprog. Jeg har valgt at man via et link skal vælge sprog.

Ved at klikke på linket modtages sprogid via querystring, hvorefter jeg ønsker at oprette en session.Så langt så godt. Problemet er at ikke kan overføre session til de efterfølgende sider. se eks.

side1.asp

<html>
<body>
<p><a href="/side1.asp?language=uk">engelsk</a></p>
<p><a href="/side1.asp">dansk  </a></p>
<p><a href="/side2.asp">videre med os </a></p>
<%
dim language
language =Request.QueryString("language")
If language = "uk" Then
      Session.Abandon
      Session("lan")="uk"   
      Response.Write("Hello how are you " & language & "!<br />")
else
      Session.Abandon
      Session("lan")="dk"
      Response.Write("Godag " & language & "!<br />")   
End If
%>
  <%= Session("lan") %>
</body>
</html>
---------------------------------------------------------

side2.asp

<html>
<body>
<p><a href="/side1.asp?language=uk">engelsk</a></p>
<p><a href="/side1.asp">dansk  </a></p>
<p><a href="/side3.asp">videre med os </a></p>
<%Response.Write(Session("lan"))%>

</body>
</html>

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

side3.asp

<html>
<body>
<p><a href="/side1.asp?language=uk">engelsk</a></p>
<p><a href="/side1.asp">dansk  </a></p>
<p><a href="/side1.asp">tilbage</a></p>
<%Response.Write(Session("lan"))%>
</body>
</html>

----------------------------------------------------------------
Avatar billede softspot Forsker
19. september 2005 - 15:26 #1
Har du prøvet at lade være med at kalde Session.Abandon, men bare tildele Session("lan") værdien for det nye sprog, f.eks. "uk"?
Avatar billede busschou Praktikant
19. september 2005 - 15:26 #2
Du skal ikke kalde session.abandon først!
Når man kalder session.abandon så bliver den først udført til sidst på siden uanset hvad
Herved får du slettet indholdet af sessionen
Avatar billede johnleif Nybegynder
19. september 2005 - 18:10 #3
Det ser heller ikke ud til at løse problemet, ideen var at den aktive session skulle nedlægges ved ændring af sprogvalg.
Scriptet virker fint, bortset fra at jeg ikke kan videreføre sessionen til de efterfølgende sider. Jeg havde forstået at sessions uden videre kunne overføres til efterfølgende sider, men jeg kan ikke få det til at virke.
Avatar billede busschou Praktikant
19. september 2005 - 18:18 #4
ja det kan de også
Men når du kalder session.abandon så slettes alt indhold i den aktive session
Det skal blot bemærkes at et kald til session.abandon først har effekt til sidst på siden uanset hvor du skriver det
Derfor er det lige gyldig om du skriver
--
Session.Abandon
Session("lan")="uk"   
---
eller
---
Session("lan")="uk"
Session.Abandon
---
Så snart side1.asp er indlæst færdig så kaldes abandon og sessionen dør
Når du så klikker på et link til side2.asp så får du tildelt en ny session
Avatar billede busschou Praktikant
19. september 2005 - 18:19 #5
jeg forstår ikke hvorfor du vil nedlægge hele sessionen?
Du kan jo nøjes med at skrive
session("lan") = ""
Så er sproget slettet
Avatar billede johnleif Nybegynder
19. september 2005 - 19:04 #6
Ok.. jeg har slettet session.abandon men det virker stadig ikke.
Når jeg forsøger at kalde sesssion("lan") på de øvrige sider, er feltet blankt.
Avatar billede busschou Praktikant
19. september 2005 - 19:11 #7
hmm underligt, ellers er koden mangen til den øverst oppe?
Og den skriver det fint ud på side1.asp?
Men når du klikker på linket til side2.asp så skriver den intet ud?
For det ser godt nok ud så...hmm :o/
Avatar billede softspot Forsker
19. september 2005 - 19:15 #8
Nu er det vel ikke sådan noget med at browseren ikke tillader cookies eller sådan noget, vel?
Avatar billede johnleif Nybegynder
19. september 2005 - 19:17 #9
Tja... jeg har forsøgt med både IE6, og Mozilla Firefox, Netscape, alle giver samme resultat
Avatar billede softspot Forsker
19. september 2005 - 19:37 #10
det lyder som et eller andet i dit miljø der ikke er slået til.

Har du gang i andre session-variable som fungerer?

Har du nogen page-directives som slår sessions fra (@SESSIONSTATE=FALSE)?

Er IIS sat til at slå sessions fra (kig på egenskaber for sitet i IIS-manageren Home Directory > Configuration-knappen og Options-fanen i det vindue som popper frem når du trykker på Config.-knappen)?
Avatar billede johnleif Nybegynder
19. september 2005 - 19:42 #11
Den er enabled, og sat til 20min
Avatar billede softspot Forsker
19. september 2005 - 21:24 #12
og jeg gentager lige de andre to spørgsmål:

Har du gang i andre session-variable som fungerer?

Har du nogen page-directives som slår sessions fra (@SESSIONSTATE=FALSE)?
Avatar billede johnleif Nybegynder
19. september 2005 - 21:26 #13
Sorry... niksen
Avatar billede softspot Forsker
19. september 2005 - 21:32 #14
Too bad :)

Det vil sige at der er ikke noget som fungerer hvad session angår og alt er slået til i browseren og i IIS og i script. Så du er med andre ord fuldstændig afskåret fra at bruge sessions... tjaah, det kan man vist kalde too bad!
Avatar billede johnleif Nybegynder
19. september 2005 - 21:36 #15
Som jeg gjorde opmærksom på... jeg er virkelig ved at få grå hår....
Jeg har dog fundet en alternativ løsning, men jeg ville bare gerne finde fejlen... :-)
Avatar billede softspot Forsker
19. september 2005 - 21:41 #16
Har du prøve at lave en helt simpel test, altså:

side1.asp:
<%
Session("test") = "værdi i session"
%>


side2.asp:
<%
Response.Write Session("test")
%>

og fungerer det så?
Avatar billede johnleif Nybegynder
19. september 2005 - 21:55 #17
Jeps... det har jeg prøvet, og det virker fint. Problemet skyldes måske at jeg laver request.querysting("language") i et link med henholdsvis værdien "UK" og "DK". på side1.asp virker det fint, men jeg kan @¤$#%%& ikke få den værdi trukket ud på de efterfølgende sider. ØV
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