Avatar billede mettecarsten Nybegynder
10. oktober 2007 - 21:21 Der er 9 kommentarer og
2 løsninger

Placering af Session.Timeout

Hej eksperter

Når en bruger logger sig ind, huskes brugerens id i en session og skal ikke sådan lige timeout. Når der logges ind, bruger jeg:

<%
Session.Timeout = 1440
%>

<%
If Request.Servervariables("REQUEST_METHOD")="POST" Then

  bnavn = replace(Request.form("Username"),"'","")
  pword = replace(Request.form("Password"),"'","")

  SQL = "SELECT * FROM bruger WHERE Bnavn='" & bnavn & "' AND Password='" & pword & "'"
  Set rs = conn.Execute(SQL)
 
  If (NOT rs.EOF) and bnavn<>"" and pword<>"" Then
 
    Session("Udlejerid") = rs("Id") 'Gemmer ID'et på den bruger der er logget ind.
   
    'Her angiver du hvilken side brugeren skal sendes til efter login.

    Response.Redirect "udlejer.asp"
    Conn.Close
  Else
    Conn.Close
    Response.Redirect Request.ServerVariables("SCRIPT_NAME")&"?nouser"
  End If
End if
%>

Når brugeren er logget ind, gemmes flere sessions undervejs, f.eks. en session for den annonce, som brugeren ønsker at rette.

Jeg troede at det første af ovenstående kode gjorde, at brugeren ikke logges af, men nogle gange sker det alligevel. Nok på baggrund af:

<%
If isEmpty(Session("Udlejerid")) Then
  Response.Redirect("logoff.asp")
End If
%>

på hver side.

Hvordan skal Session.Timeout placeres rigtigt? På alle sider? Ved enhver værdiansættelse af en ny session?

Virkelig på forhånd tak.
Avatar billede w13 Novice
10. oktober 2007 - 21:34 #1
Det bør være på alle sider, ja.

I øvrigt kan du rette:

<%
If isEmpty(Session("Udlejerid")) Then
  Response.Redirect("logoff.asp")
End If
%>

Til:

<%If isEmpty(Session("Udlejerid")) Then Response.Redirect("logoff.asp")%>

Hvis du vil =) Jeg synes i hvert fald, det er pænere og mere overskueligt.
Det kan gøres sådan, når der kun er
Avatar billede mettecarsten Nybegynder
10. oktober 2007 - 21:45 #2
Super

Jeg har en fil med forbindelsesoplysninger til mysql-databasen. Denne fil includeres på alle sider - kan jeg egentlig ikke bare sætte Session.Timeout = 1440 i forlængelse af denne fil? Eller er det skidt, at den indsættes på alle sider, også der, hvor der aldrig bruges sessions?

Jeg lukker nu, men ser på det i morgen tidlig / formiddag.
Avatar billede w13 Novice
10. oktober 2007 - 21:47 #3
Det ville være en god id
Avatar billede w13 Novice
10. oktober 2007 - 21:48 #4
*god id
Avatar billede w13 Novice
10. oktober 2007 - 21:48 #5
Hmmm.. Min browser fejler et eller andet slemt..
Avatar billede keysersoze Ekspert
10. oktober 2007 - 22:09 #6
det største problem med tabte sessions ligger somregel hos webhotellet - specielt mange af de billige smider for mange brugere på samme server og alle deler samme pool, og laver bare én rav i den går det ud over alle.
Avatar billede mettecarsten Nybegynder
11. oktober 2007 - 05:29 #7
keysersoze, skal jeg forstå det sådan, at min oprindelige kode ok, og det formentlig ikke vil betyde noget, at indsætte Session.Timeout = 1440 på alle sider, altså at problemet formentlig ligger på webhotellet?
Avatar billede keysersoze Ekspert
11. oktober 2007 - 17:49 #8
jeg siger ikke at det _er_ sådan - men at muligheden er til stede. Hvis det nogle gange virker og andre gange ikke så er det på webhotellet at problemet ligger - hvis det er konsekvent må man forsøge sig med lidt flere tests.
Avatar billede mettecarsten Nybegynder
11. oktober 2007 - 18:05 #9
Perfekt :-)

I har begge kommet med gode kommentarer, så I deler. Smid begge et svar. Tak for hjælpen.
Avatar billede w13 Novice
11. oktober 2007 - 23:16 #10
Ok :)
Avatar billede keysersoze Ekspert
12. oktober 2007 - 18:32 #11
svar :)
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