Jeg har et brugersystem som også har en tilhørende onlineliste og en online tæller... Det virker på flg. måde: Når brugeren logger ind så bliver hans/hendes session ID gemt i en database og så henter jeg bare detaljerne fra denne.. Men problemet er at jeg bruger Global.asa til at administrere brugerne, således at i min Session_OnEnd sletter den det ID som session'en var.. Eller dvs at det SKULLE den, men det gør den bare ikke... Når brugeren bruger min logud knap virker det fint men ikke når de bare lukker vinduet (Hvilket de fleste gør) og lader systemet time out.. Er der nogen som kan hjælpe på denne her???
Et kvalificeret bud på en global.asa - så håber jeg dine funktioner hedder det samme? -------------------------------------------------------------------------------------
<SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Application_OnStart Application.lock Session.Timeout = 5 Application("aktiveSessioner") = 0 Application("totaleSessioner") = 0 Application.unlock End Sub
Sub Session_OnStart Application.lock Session("brugerId") = 0 Application("totaleSessioner") = Application("totaleSessioner") + 1 Application("aktiveSessioner") = Application("aktiveSessioner") + 1 Application.unlock End Sub
Sub Session_OnEnd Application.lock Application("aktiveSessioner") = Application("aktiveSessioner") - 1 Application.unlock End Sub </SCRIPT>
strSQL94 = "Delete from ActUsers where Active_ID = " & Session("bruger_id") & "" ConnBR2.Execute(strSQL94)
'Lukker databasen ConnBR2.Close Set ConnBR2 = Nothing End Sub </SCRIPT>
Og når brugeren logger ind så burde den da automatisk indsætte ham/hende i databasen og ligeledes når han/hun lukker vinduet, så burde han/hun slettes fra databasen når session'en timer out. Men dette sker ikke...
prøv at lav en asp-fil med indholdet fra din session_onstart (bare udskift session med et fiktivt id) og læg filen samme sted som global.asa filen og se om det virker når du kører asp-filen eller om der kommer en fejl
Jeg skal lige sikre mig at jeg har forstået dig rigtigt.... Den indsætter korrekt ved start af en session, men lukker ikke som den skal ved afslutningen af den?
Bortset fra det, er jeg ikke begejstret for at du lægger denne information i databasen. Så bør du i hvert fald som minimum sørge for at du starter på en tom tabel når din side kaldes første gang, for ellers kan du have XX sessioner i tabellen, og hvis så strømmen forsvinder for serveren, vil du i princippet aldrig få dem fjernet igen.
Hej igen.. Når brugeren logger ind har jeg lavet et script, som indsætter brugeren i databasen, men hvis dette script ikke er der så bliver han/hun ikke indsat i tabellen. Så man kan godt sige at det heller ikke indsætter korrekt når man logger ind... Men dette gør den heller ikke når man lukker vinduet og venter på at Session'en timer out.. Og til det sidste her så virker det fint når man logger ud for så kører den flg. funktion: Delete from ActiveUsers where Active_ID = '" & Session("bruger_id") & "'" Altså samme som min global.asa.. Så det må altså være i min global.asa det er galt med.. Eller jeg ved ikke
har du prøvet det jeg skrev? altså lave 2 asp-filer - en med hver funktion men bare med et fiktivt id - og så lægge dem i samme mappe som global.asa og se om de fungerer?
Nej... Jeg kan sgu ikke gennemskue det.. Jeg har ordnet koderne så de er 100% ens... Men det virker stadig ikke.. Men hvis der ikke er nogen som har nogle flere input så bare smid et svar en eller anden, så finder jeg en anden løsning.. Men jeg siger da tak for jeres indlæg...
Opret en application variabel, og læg en til for hver session der starter, og træk en fra for hver session der slutter. Ultra simpelt.
Se så om du overhovedet får eksekveret din global.asa, for hvis heller ikke det virker, kan det godt være at du laver nok så fin kode, men det er et andet sted skoen klemmer.
Ligger din global.asa det rigtige sted? Hvilken server kører det på? Er det chiliASP der kører på en linux-server, og der fejlagtigt ikke er de fornødne rettigheder på global.asa?
....og hvis din global.asa IKKE ligger det samme sted som den anden fil hvor du kører dit log-ud, skal du nok ikke bruge præcis den samme sti til database-filen, for så rammer du nok ved siden af.
Hej igen... >>sbm Jeg har lavet en ny global.asa som ser således ud: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Application_OnStart Application("NumUsers") = 0 End Sub
Sub Application_OnEnd ' Skriv kode som skal køres når applikationen (serveren) stoppes End Sub
Sub Session_OnStart Application("NumUsers") = Application("NumUsers") + 1 End Sub
Sub Session_OnEnd Application("NumUsers") = Application("NumUsers") - 1 End Sub </SCRIPT> Og inde i min .asp fil har jeg flg. kode: <%= Application("NumUsers") %> Men den skriver slet ikke noget overhovdet.. Hverken 0 eller det antal som er online... Så NU må jeg sige at jeg officelt er 100% sat af... :-( Hvad kan det tyde på??
>> keysersoze Jeg har ikke prøvet det du har forslået for jeg ikke forstår hvad det er du mener jeg skal gøre... Og hvilke funktioner du taler om...
'Lukker databasen ConnBR.Close Set ConnBR = Nothing %> --------------
Hvis det virker så er du i hvert fald sikker på at koden er rigtig og så er vi nået det længere - virker den ikke kan der være flere grunde til det, mest nærliggende er så at at undersøge om global.asa ligger det rigtige sted og om webhotellet (hvis du kører siden på et webhotel) i det hele taget understøtter global.asa
>> keysersoze: ok.. denne ting du nævner her har jeg prøvet. Jeg har placeret de to koder i hhv. login.asp og logout.asp... Og der virker det fint.. Så længe min brugere logger ud af siden virker dette da også helt fint.. Problemet er bare at det er der jo de færreste, som gør...
Jeg kører lige nu min side på min egen IIS.. Selve filerne ligger i flg. struktur: inetpub/wwwroot/LW/SBNnew/www/default.asp (osv.) Og min global.asa ligger her: inetpub/wwwroot/LW/SBNnew/www/globa.asa
Er dette ikke det rigtige sted at ha den liggende???
Mvh Jesper
Synes godt om
Ny brugerNybegynder
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.