Avatar billede psyclown Nybegynder
29. juni 2002 - 02:22 Der 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.

På forhånd tak!
Avatar billede medions Nybegynder
29. juni 2002 - 02:38 #1
Det er netop derfor du skal bruge Global.asa, da det er en global fil der kontakter serveren...

Hvis dette er et weired svar, så er det fordi jeg er æske lam! hhehe..!

//>Rune
Avatar billede psyclown Nybegynder
29. juni 2002 - 03:01 #2
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
Avatar billede tmceu Praktikant
29. juni 2002 - 03:16 #3
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.
Avatar billede psyclown Nybegynder
29. juni 2002 - 03:23 #4
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 ?
Avatar billede tmceu Praktikant
29. juni 2002 - 03:46 #5
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.
Avatar billede psyclown Nybegynder
29. juni 2002 - 03:53 #6
dvs. der ikke er meget at gøre hvis man bruger Access ?
Avatar billede tmceu Praktikant
29. juni 2002 - 04:03 #7
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 :-)
Avatar billede psyclown Nybegynder
29. juni 2002 - 04:08 #8
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).
Avatar billede tmceu Praktikant
29. juni 2002 - 04:20 #9
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
Avatar billede oasen Nybegynder
29. juni 2002 - 04:35 #10
Avatar billede wilweb Nybegynder
29. juni 2002 - 10:48 #11
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:>
Avatar billede oasen Nybegynder
29. juni 2002 - 17:49 #12
Henvisningen var ikke ment som et svar, blot som en lille idé han kan bygge videre på.
Jeg har ikke testet det, men det ser meget fornuftigt ud.
Avatar billede oasen Nybegynder
29. juni 2002 - 17:50 #13
"hvorfor har du ikke lukket spm'et"
Jeg kan jo ikke lukke et spørgsmål, jeg ikke selv har oprettet!!
Avatar billede wilweb Nybegynder
01. juli 2002 - 22:26 #14
oasen:> sorry, min fejl!
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