Avatar billede hjemmeskoen Nybegynder
14. april 2005 - 14:56 Der er 15 kommentarer og
1 løsning

Global.asa

Hejsa.

Jeg har lavet noget Online - Offline værk som opdaterer databasen hvergang man logger ind og når man trykker på logud men hvis nu man bare lukker browseren så skifter den jo ikke en status til Offline. Jeg har fået afvide man kan løse problemet hvis nu man bruger global.asa nogle der kan hjælpe med det?
Avatar billede ldanielsen Nybegynder
14. april 2005 - 15:25 #1
Det er i virkeligheden meget enkelt. Hvis du ikke har det, så lave en fil der hedder global.asa, og læg den i roden af dit site. Det skal være en tekstfil, og indholdet skal være som dette:


<SCRIPT LANGUAGE='VBScript' RUNAT='Server'>

Sub Application_OnStart
 
End Sub

Sub Application_OnEnd
 
End Sub

Sub Session_OnStart

   
End Sub


Sub Session_OnEnd
  'Kode der registrerer logud her
 
End Sub


Jeg ved ikke hvordan logud koden skal være, det har du måske selv fundet ud af nu?

</SCRIPT>
Avatar billede hjemmeskoen Nybegynder
14. april 2005 - 15:28 #2
Jep det har jeg. Men skal det være HELE logud koden? Og nu ligger landet sådan jeg har en fil der hedder Global.asa hvad skal jeg så gøre? :)
Avatar billede ldanielsen Nybegynder
14. april 2005 - 16:35 #3
Som jeg siger:

indenfor Sub Session_OnEnd skal du skrive kode der registrerer at brugeren er logget ud.
Avatar billede hjemmeskoen Nybegynder
14. april 2005 - 20:39 #4
Er det sådan den skal se ud?:


<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<script language=VBScript RUNAT=Server>

Sub Session_OnEnd
Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
    SQL = "UPDATE admin SET total_moent = total_moent + " & Session("moent_total") & " WHERE ID = " & Session("ID")
    Conn.execute(strSQL)
    Set Conn = Nothing
  End Sub
</script>

<SCRIPT LANGUAGE='VBScript' RUNAT='Server'>

Sub Application_OnStart
 
End Sub

Sub Application_OnEnd
 
End Sub

Sub Session_OnStart

   
End Sub


Sub Session_OnEnd

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
SQL = "UPDATE admin SET total_moent = total_moent + " & Session("moent_total") & " WHERE ID = " & Session("ID")
Conn.Execute("UPDATE admin SET online='Nej' WHERE id=" & Session("id"))
Conn.execute(SQL)
Set Conn = Nothing

' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
 
End Sub

</SCRIPT>
Avatar billede ldanielsen Nybegynder
15. april 2005 - 11:59 #5
Det første:
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>

det ved jeg ikke hvad er, er det noget du skal have med?

Derefter kommer der to script blocks, men der skal kun være én. Indenfor den kan der være disse 4 subs: Application_OnStart, Application_OnEnd, Session_OnStart og Session_OnEnd.

Som det er nu er Session_OnEnd der to gange, det skal den ikke.

Så det skal nærmere være:

<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<SCRIPT LANGUAGE='VBScript' RUNAT='Server'>

Sub Application_OnStart
 
End Sub

Sub Application_OnEnd
 
End Sub

Sub Session_OnStart

   
End Sub


Sub Session_OnEnd
  Dim Conn, SQL
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
  SQL = "UPDATE admin SET total_moent = total_moent + " & Session("moent_total") & " WHERE ID = " & Session("ID")
  Conn.Execute("UPDATE admin SET online='Nej' WHERE id=" & Session("id"))
  Conn.execute(SQL)
  Set Conn = Nothing
End Sub

</SCRIPT>


Jeg har slettet dette:

Session.Abandon
Response.Redirect "Login.asp"

Det hører ikke hjemme her, men hvis du laver en "Logout" asp-side, så ville der være fint at lægge de to kommandoer der.

Sub Session_OnEnd kører når en Session slutter, så at kalde Session.Abandon der er jo lidt absurd.

Response.Redirect "Login.asp" kunne måske betyde at brugeren bliver redirected til den side hvis hans session timer ud, men jeg tor ikke det virker, tester lige ...
Avatar billede ldanielsen Nybegynder
15. april 2005 - 12:04 #6
Se her:

http://www.w3schools.com/asp/asp_globalasa.asp

Bl.a. står der:

Restrictions
Restrictions on what you can include in the Global.asa file:

You can not display text that is written in the Global.asa file. This file can't display information
You can only use Server and Application objects in the Application_OnStart and Application_OnEnd subroutines. In the Session_OnEnd subroutine, you can use Server, Application, and Session objects. In the Session_OnStart subroutine you can use any built-in object

Man kan altså ikke bruge Response-objektet i global.asa
Avatar billede hjemmeskoen Nybegynder
15. april 2005 - 17:57 #7
Hmm.. Får fejlen:

Active Server Pages error 'ASP 0134'

Invalid ProgID attribute

/LM/w3svc/1557640236/root/global.asa, line 1

The object has an invalid ProgID of 'MSWC.MyInfo'.
Avatar billede ldanielsen Nybegynder
16. april 2005 - 01:32 #8
Nå, så har du slettet det, eller hvad:

<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>

Prøv at sætte det ind igen
Avatar billede hjemmeskoen Nybegynder
16. april 2005 - 08:14 #9
Nej det står der.
Avatar billede ldanielsen Nybegynder
17. april 2005 - 12:11 #10
så fjern det ...
Avatar billede hjemmeskoen Nybegynder
17. april 2005 - 13:46 #11
Det virker ikke? Selvom man lukker browseren bliver ens Online ikke til Offline.
Avatar billede ldanielsen Nybegynder
18. april 2005 - 08:38 #12
Session_OnEnd kører ikke når man lukker vinduet. Den kører når en session slutter.
Avatar billede hjemmeskoen Nybegynder
18. april 2005 - 14:57 #13
Nå ja det kan jeg sgu da os regne ud. Nåmen kan man så ikke lave en der også gør ens Online til offline når man lukker browseren?
Avatar billede ldanielsen Nybegynder
18. april 2005 - 15:36 #14
Det ville kræve at der bliver sendt en besked til serveren når vinduet lukkes. Det KUNNE man gøre med javascript, noget med body onUnLoad, man skulle så sætte den til at åbne et nyt vindue idet det gamle lukkes. Problemet er bare at diverse popup-blockere ikke vil tillade det, og nu om dage har alle jo sådan en fyr. Alle der har XP med sp2 har i hvert fald.

Så den løsning er ikke god.

Hvis du vil teste om den med global.asa virker skal du lave en logoutside der har kommandoen Session.Abandon, og den kunne så efterfølgende redirecte til en HTML-side, ikke en ASP-side (idet brugeren henter en asp-side startes der straks en ny session).
Avatar billede hjemmeskoen Nybegynder
18. april 2005 - 16:39 #15
Nå. Jamen jeg siger tak for hjælpen giv mig et svar.
Avatar billede ldanielsen Nybegynder
20. april 2005 - 15:31 #16
Selv tak
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