session forsviner ikke bare ved at brugeren lukker browseren ne. Derfor vil sessin stadig være der når han åbner et nyt browser vindue. Derfor kan du så tjekke om han har noget i hans session, og hvis han har, så er han logget ind og dermed sende ham videre til den side han nu skal, og ikke til login siden. Sådan gør det kode jeg har skrevet ovenover.
Hvis du åbner en Browser f.eks Internet Explorer og går ind på dit site oprettes der en session til dig. Hvis du klikker på et link på dit site som åbner f.eks et forum i et nyt vindue, er det stadig samme session. Hvis du åbner en ny Internet explorer og går ind på dit website, så oprettes der en ny session.
Du kan evt lægge brugernavn og kodeord i en cookie og så på den måde lave et "autologin". Men der er jo brugere som ikke vil acceptere cookies, og så er der jo også et sikkerhedsissue der
Jeg forstår ikke hvad du vil opnå 1) Hvis jeg i min FF laver en ny tab med eksperten her, ja så har jeg to vinduer i samme session 2) Hvis jeg åbner en helt ny IE og går ind på eksperten så beder den mig logge på -- i version et har jeg to vinduer i een og samme session i version to har jeg to vinduer i hver sin session -- version et kan ikke forhindres, så hvorfor forhindre version to som i principper er næsten det samme?
Der er flere ting jeg vil opnå, blandt andet at jeg har en online brugerliste, jeg kan regne nogenlunde med og dels misbrug af dobbelt konfekt ved brugerfunktioner
Du kan ved login opdatere din database Update brugere Set online = True Where bruger = ib Og når brugeren logger ud så Update brugere Set online = False Where bruger = ib -- Når en bruger logger ind kan du tjekke set rs = conn.execute("select * From brugere where bruger = ib") if rs("online") then response.write "fejl du er allerede logget ind else login end
der er kun et eneste problem, og det er at du kan ikke stole på at brugeren logger ud derfor skal du kode det i global.asa se evt http://www.eksperten.dk/artikler/752 der er så igen kun et problem, og det er at det stadig ikke er 110% sikkert at brugeren registrerest som logget ud Med andre ord risikerer du at spærre så en bruger aldrig kan logge ind :o/
det er derfor du skal kode det i global.asa, så registreres det når sessionen dør, efter ti eller tyve minutter eller hvad du nu har sat session.timeout til :o)
det med din brugerliste, hvis hver bruger kun står i den een gang, så gør det jo ikke noget man logger ind tyve gange, man står stadig kun online een gang :o)
Det er jo så upraktisk kan jeg godt se, hvis det kun er derfor så ville jeg lave det om så man kun står der een gang Ellers kan du kode det i global.asa Jeg har ingen statestik over hvor mange gange session_onend fejler i at bliver kørt, ved bare at det kan ske Men du kan jo så evt kode den til at sætte alle offline efter fx 24 timer
det er jo javascript, og hvis du skal logge en ud skal du have fat i serveren Men javascriptet kører på klienten Så det kan du ikke Du kan i IE benytte UnBeforeUnload Men det er _kun_ IE :o)
ok hvis du er tilfreds med den Men kan du 1) regne med at den åbner vinduet? 2) regne med at folks popup spærrer ikke sørger for den ikke er der 3) regne med den åbner hvis man ikke har javascript
Det kommer med andre ord an på hvor vigtig det er for dig at man ikke må åbne to vinduer Hvis det er meget vigtig så vil jeg ikke mene den metode dur Hvis det er knap så vigtig så er den metode måske ok, meen, så kunne den måske også undværes :o)
Den forstår jeg ikke helt Men uanset hvad vil du med sådan et tjek sikkert opleve at det også generer nogen Fx hvis man kommer til at logge ud ved en fejl, og så vil logge ind igen med det samme, så spærrer det vel også?
Så skulle man ved logud.asp sætte kolonnen 'senestelogin' minus 2 min. så ville det være løst. Jamen ellers tak for hjælpen, jeg vil lige tænke det hele igennem...
ja, men du ender stadig op med at hvis en bruger lukker vinduet med alt-f4 så registreres dette ikke Derfor skal det stadig kodes i global.asa og du vil også komme ud for at dem som bare lukker sit vindue derfor først bliver logget ud efter standard 10min
Men ja, så kan man sige så rammer det jo trods alt kun dem som ikke logger ordentlig ud Det kan man jo skrive i sin faq
det er lige det ;o) Du kan sætte session.timeout = 1 Så vil der maks gå et minut før man kan logge ind igen Men omvendt betyder det også at bare man sidder og har læst en tekst på et minut og fem sekunder så er man logget ud
Der er bagsider ved alt Den nemmeste løsning var hvis man selv kunne smide sessioner ud Så kunne man registrere sessionsid´et og når en bruger så loggede ind igen så smed man det gamle sessionsid af Men det kan man mig bekendt ikke, måske man kan hvis man selv har serveren, det ved jeg desværre intet om
Det var nok ellers den perfekte løsning, men det ved jeg heller ikke noget om. Men hvis man sætter session.timeout = 1 og samtidig laver et iframe med stayonline.asp som refresher for hver 55 sek. så holdes brugeren kunstigt online...
og dog som sagt er der ulemper ved alt Det betyder så også at brugeren vil stå evigt online hvis vedkommende lader skærmen stå tændt Men det er nok de færreste som ikke lukker den
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.