Avatar billede dinox Nybegynder
01. september 2003 - 00:14 Der er 5 kommentarer

IE session ID/flere browser instances

Hvordan holder man styr på flere sessions i InterExplorer fra perl? Der findes vidst en feature der gør at hver gang man starter en helt ny IE session (ikke blot et nyt IE vindue) endda på samme computer, så får den et ID, så kan man holde styr på den nye session.

Men hvordan får man fat i dette ID??

Jeg kender umiddelbart kun til de gode gamle $session = cookie('session'); eller $session = param('session');



Jeg er ved at lave en webbaseret login/password ting, og har tænkt mig at bruge cookies med session ID til at holde styr på at man er logget ind.

Problemet er så at det skal kunne køre et sted hvor der er 10 tyndeklienter, hvor cookies og URL-autocomplete funktionen er gemt centralt på en server, og de 10 maskiner reagerer som om de var 1 maskine. Derfor kan jeg:
- ikke gemme et session ID i en cookie, så ville alle brugere være logget på som den samme brugere, og det er jo ikke meningen.
- ikke bruge IP numre til at holde styr på sessions, alle brugere har jo samme IP.
- ikke bruge URL baseret session ID, da URL autocomplete, så vil gøre at man ved en fejl kunne komme til at logge på som en anden, eller endda redigere i noget ved en fejl.
- jeg KUNNE gemme det hele i forms, og sende det afsted, men det lyder ikke som den rette måde at gøre det på.
- jeg KUNNE lave et nyt session ID, efter hvert go, men det lyder også lidt forkert.

Håber nogen kan hjælpe, især med disse "mystiske" session ID'er som IE vidst har.
Avatar billede ranko Nybegynder
07. september 2003 - 12:26 #1
Selvom al informationen bliver gemt centralt bør de tynde klienter vel alligevel fungere som 10 uafhængige sessioner - på samme måde hvis du havde startet IE 10 gange på samme maskine (dog ikke vha Ctrl-N, så "arves" bl.a. de sessionsafhængige cookies)

Og så kan du i perl-scriptet generere et sessionid som du så sender til clienten som en cookie efter der er logget ind. Disse sessionid'er kan du have i en "database", så du dér kan holde styr på f.eks. hvilke sessionid'er der er blevet ugyldige efter en passende tid (5, 10, 20 minutter)
Avatar billede dinox Nybegynder
07. september 2003 - 13:08 #2
Tak. :)
hmm.. det er vidst det jeg skriver, at de tynde klienter fungerer som uafhængige sessions, men at cookies bliver gemt centralt, på tværs af de forskellige sessions. Derfor vil de bare overskrive hinanden, hvis man sender en cookie til den ene session, og en anden til den anden.

Det jeg er på jagt efter:
Hvis jeg f.eks logger ind på eksperten.dk, kopier URL'en, starter en ny IE session, og paste'r URL'en i den nye session, så er jeg IKKE logget ind her - det er jeg stadig kun i den første session. Så jeg skal indtaste min login og password igen i denne session for også at logge ind her.

Hvis jeg gør det samme i MINE scripts, så ER jeg logget ind, også selv om det er en ny session - cookie'en ligger jo samme sted. :(

Så spørgsmålet er simplet: hvordan laver man en session login, ala "hotmail" eller "eksperten"?? så man ikke automatisk er logget på når man starter en ny session (ikke bare ctrl+N).

Hvad er det der gør at man skal taste login og password ind i flere nystartede IE browser?? det er ihvertfald ikke de coookies som jeg bruger. :)
Avatar billede ranko Nybegynder
07. september 2003 - 13:35 #3
Angiver du en udløbsdato på din cookie ?
Hvis cookien ingen udløbsdato får gemmes den ikke på disken og er kun i "live" så længe browseren er det (og er heller ikke tilgængelig for andre nystartede IE).
Avatar billede dinox Nybegynder
07. september 2003 - 13:50 #4
Ok! så du siger at hvis mine cookies -expires=>'now' , så knytter de sig ikke længere til nye session, men kun til den browser som lavede dem, så længe dens vindue er åbent. Og hver ny session vil lave sig en ny en.

Jeg prøver! både med -expires=>'now' og helt uden! :) tak!

Er lidt spændt på om det virker, om den beholder den selvom den jo er løbet ud, men også hvad de andre sessions gør - om de virkelig laver en ny eller læner sig op af den gamle. Og hvis de laver nye, om de så prøver at slette de andre browseres sessioncookies.
Avatar billede ranko Nybegynder
07. september 2003 - 14:12 #5
Ja, når du (dit script) laver cookien skal du helt udelade "-expires"

Hvis du ønsker at folk automatisk skal logges ud efter nogen tid skal du selv holde styr på dette; f.eks. ved at holde rede på hvilke sessionid dit script har lavet og hvornår de sidst var aktive.
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