29. juni 2002 - 02:22Der er
13 kommentarer og 1 løsning
onlineliste
Nu har jeg lavet en simple onlineliste uden global.asa, ved bare at have en checkbox felt i db'en og når de så logger på så sætter den checkboxen til TRUE og når de logger af sætter den, den til FALSE, ikke så svært, men der er et lille problem, når man gør det på den måde, hvis de ikke bruger logoff knapper, så bliver de ikke logget af, selvom session.timeout er løbet ud, men måske er det den måde jeg har gjort det på, som ikke gør det. Her er koden til min login side:
<% If request("mode") = "checkpass" Then On Error Resume Next SQL = "SELECT * FROM [Users] WHERE Username='" & Request("Username") & "'" Set rstemp=Conntemp.Execute(SQL)
If Not Request("Password") = rstemp("Password") Then log("(" & Request("Username") & ") **FEJL I PASSWORD** (ADMIN)") Response.Redirect "login.asp?error=1" Else Session("AdminPass") = "OK" Session("AdminUser") = rstemp("Username") Session("AdminAlias") = rstemp("Alias") Session("AdminLevel") = rstemp("UsrLevel") Session("AdminID") = rstemp("UsrID") Session("AdminEmail") = rstemp("Email") Session("AdminHomepage") = rstemp("Homepage") Session("AdminTime") = Time Session("AdminDate") = Date Session.Timeout = 20 SQLONLINE = "UPDATE [Users] SET Online=TRUE WHERE (UsrID= "& Session("AdminID") &")" Conntemp.Execute(SQLONLINE) log(session("AdminUser") & " logged on") Response.Redirect "news.asp" rstemp.close Set rstemp = Nothing End If
ElseIf request("mode") = "logoff" Then log(session("AdminUser") & " logged off") SQLOFFLINE = "UPDATE [Users] SET Online=FALSE WHERE (UsrID= "& Session("AdminID") &")" Conntemp.Execute(SQLOFFLINE) Session("AdminPass") = "NOTOK" Session("AdminAlias") = "" Session("AdminUser") = "" Session("AdminNavn") = "" Session("AdminLevel") = "" Session("AdminID") = "" Session("AdminEmail") = "" Session("AdminHomepage") = "" Response.redirect "news.asp" End If %> En der kan hjælpe med, hvad det kunne skyldes?
Så har jeg også lige et andet spørgsmål. Jeg har prøvet et par gange at bygge noget autologin ind i det script der, men jeg har ikke kunne få det til at virke, men måske var der en venlig sjæl der kunne hjælpe mig med det og måske give mig et eksempel på hvordan det kunne gøres med cookies osv. i det script der.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
hehe, well nu var det sådan at jeg ikke kunne finde ud af at lave det med global.asa, så jeg lavede det på den nemmeste måde, det er sådan set min grund til det, men det kunne jo være at du kunne hjælpe mig, selvom det ikke er global.asa...engang når du bliver ædru :D
Hvis ikke du vil anvende Session_OnEnd i global.asa er der kun én mulighed tilbage og det er at lave et periodisk gennemløb af brugerne og beslutte hvem der ikke længere er online.
Først og fremmest kræver dette et ekstra felt, der holder styr på sidste aktivitet for den enkelte bruger. Dette felt vil så skulle opdateres hver gang brugeren foretager sig noget på din side.
Beslutter du dig for at brugere ikke længere er online efter eks. 20 min. uden aktivitet, skal du så lave én af følgende:
1. Lav et scheduleret job på serveren, der kører hver 20. minut og fjerner de brugere der ikke længere er aktive.
2. Inkluder en funktion til at fjerne brugere der ikke længere er aktive i en af dine normale ASP sider.
Intet af ovenstående er problemfrit. Jeg kan se disse problemer:
1. Opdateringen af sidste aktivitet vil tage resourcer på din side og øger kmpleksiteten en smule.
2. De fleste anvender et webhotel uden mulighed for at lave schedulerede jobs.
3. Ligger du koden i en af dine eksisterende sider, vil det også koste performance, da kontrollen skal håndteres hver gang siden vises.
Der er også visse problemer med at anvende global.asa på NT4/IIS4, men ikke i samme grad som ved at styre det selv.
Okay, det lyder noget besværligt...Så det er nok noget nemmere at lave noget Session_OnEnd. Kan jeg ikke bare lave et eller andet med at når den kommer til Session_OnEnd, så sætter den checkboxen til FALSE i databasen ?
Jo, du skal bare flytte hele din logout procedure til Session_OnEnd. Men hvis du anvender en Access database, kan du efter min mening godt glemme alt om at få det til at virke. Jeg har set ufattelig mange eksempler på at det bare ikke virker med Access, hvorimod det kører perfekt med eks. MySQL og SQL Server.
Jo, men det bliver et kompromis mellem performance og funktionalitet. Men når du anvender Access, er det sandsynligvs ikke et ret stort site og performance sikkert heller ikke så kritisk, så du kan vælge en af de løsninger jeg skitserede tidligere.
(håber ikke ovenstående vedr. Access lyder nedladende, hvilket ikke er meningen, men det er desværre de barske realiteter omkring Access :-)
Jamen så må jeg jo prøve mig frem og se hvad der sker. Du skulle vel ikke tilfældigtvis lige have et eksempel på hvordan jeg skulle have det autologin til mit script, jeg kender godt proceduren, men kan ikke finde ud af at sætte koden ordenligt ind (har prøvet).
Jeg har noget liggende rundt omkring i div. løsninger, men ikke lige til at smide ind i din kode. Men der ligger hav af eksempler "derude", prøv eks. www.activedeveloper.dk
oasen :> du henviser til http://www.eksperten.dk/spm/229717 , fik du det til at virke? I så fald, hvorfor har du ikke lukket spm'et gider du ikke skrive, hvordan for jeg kan da ikke finde hoved eller hale i det spørgsmål Gizom:>
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.