Avatar billede chris Nybegynder
23. januar 2001 - 03:01 Der er 22 kommentarer og
2 løsninger

Session_OnEnd i Global.asa

Jeg har nogle problemer i min global.asa under Session_OnEnd.
-----------------------------------
Sub Session_OnEnd
   
    application.lock
    application(\"activeusers\") = application(\"activeusers\") - 1
    application.unlock

    Set RSOnline = Server.CreateObject(\"ADODB.RecordSet\")
    sqlOnline = \"UPDATE users SET Online = false WHERE id = \'\"& session(\"id\") & \"\'\"
    set rsOnline = myConn.execute(sqlOnline)
end sub
-----------------------------------

Jeg kan ikke få den til at opdatere mit recordset ? der sker intet.
Jeg har søgt en del på nettet, via google og fandt en masse ting omkring det, men ingen løsninger. Det lader til at en hel har prøblemer med det.
Avatar billede tpiil Nybegynder
23. januar 2001 - 07:28 #1
sqlOnline = \"UPDATE users SET Online = false WHERE id=\"& session(\"id\")
Avatar billede kasseper Nybegynder
23. januar 2001 - 09:30 #2
Du beøver ikke lave et recordset til en UPDATE......

sqlOnline = \"UPDATE users SET Online = false WHERE id = \'\"& session(\"id\") & \"\'\"
myConn.execute(sqlOnline)
Avatar billede soerens Nybegynder
23. januar 2001 - 11:26 #3
Kasseper: Det hedder myConn.Execute sqlOnline
Ingen paranteser ;-)

Chris: Prøv at kigge i event vieweren på din Windows server (tror nok det er Application loggen), her står alle fejlmeddelelser.

Jeg vil også gætte på at du nok ikke skal have appostrofer omkring din WHERE id=, da du højst sandsynligt har sat datatypen på id til at være numerisk.

Du bør også lave et tjek på om Session(\"id\") = \"\" inden du fyrer din UPDATE af. Hvis det nu er en anonym bruger der surfer forbi, så vil Session(\"id\") højst sandsynligt ikke blive sat til noget og din Session_OnEnd vil fejle.

Håber det kan hjælpe dig lidt, ellers sig til ;-)

/SørenS.
Avatar billede kasseper Nybegynder
23. januar 2001 - 11:28 #4
SørenS >> Nej det gør ej....Jeg bruger sq altid paranteser.....;-)
Avatar billede kasseper Nybegynder
23. januar 2001 - 11:29 #5
og hvad er en anonym surfer...?
Hans session id er vel sat på hans Session_OnStart
Avatar billede soerens Nybegynder
23. januar 2001 - 11:38 #6
Øh, ikke nødvendigvis.

Jeg gætter på at det Chris har gang i er en rutine hvor man kan se HVEM der er online på ens site.

Dette kræver at brugerne skal authenticates/logge ind på en eller anden måde, ellers vil de alle være anonyme.

Man kan selvfølgelig lave alle mulige tricks med at læse et par cookies i Session_OnStart (bruger det selv til autologon)...

...Og til det andet: Hehe, jeg tror nok man ka\' skrive det på begge måder ;)

/SørenS.
Avatar billede kasseper Nybegynder
23. januar 2001 - 11:48 #7
Nej det er selvfølgelig ikke sikkert at chris har sikret sig med en procedure på Session_onStart, men lad os i stedet hjælpe ham med hans nuværende problem, fremfor at gætte på hans andre problemer....
Så Chris >> er der noget nyt..???????
Avatar billede kasseper Nybegynder
23. januar 2001 - 11:48 #8
arrrghhhh shit han sover nok...oprettede spg. efter 3 i nat...
Avatar billede soerens Nybegynder
23. januar 2001 - 12:24 #9
TIP: Session.Abandon er GULD værd, når man sidder og koder i Session_OnEnd ;-)

Slå den selv op, eller sig til. Så poster jeg lidt mere info.
Avatar billede chris Nybegynder
23. januar 2001 - 12:46 #10
SørenS: min session(\"id\") bliver sat længere oppe i min global.asa (når folk logger på): session(\"id\") = rs(\"id\")

....well måske jeg lige skulle poste hele min global.asa.

Avatar billede chris Nybegynder
23. januar 2001 - 12:49 #11
<script language=\"vbscript\" runat=\"server\">

\'****** åbn databasen
Set myConn = Server.CreateObject(\"ADODB.connection\")
myConn.open \"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath (\"som_jeg_her_har_sløret.mdb\")

\'****** start activeusers
sub application_OnStart
application(\"activeusers\") = 0
end sub


sub session_onstart
session.timeout = 20
session(\"start\") = now()

\'*****giv brugeren et navn
if Request.Cookies(\"som_jeg_her_har_sløret\")(\"Username\") <> \"\" then
navn = Request.Cookies(\"som_jeg_her_har_sløret\")(\"Username\")
else
navn = \"Guest\"
end if
\'****** opdater databasen
strSQL = \"SELECT * FROM Users\"
\'Set rs = myConn.Execute(strSQL)

Set rs = Server.CreateObject(\"ADODB.Recordset\")
rs.Open strSQL, myConn, 3, 3

rs.addnew
rs(\"Ip\") = request.servervariables(\"REMOTE_ADDR\")
rs(\"Country\") = Request.ServerVariables(\"script_name\")q
rs(\"Browser\") = navn
rs(\"Tid\") = time()
rs(\"Dato\") = date()
rs(\"Online\") = \"true\"

rs.update
rs.movelast

session(\"id\") = rs(\"id\")
session(\"User\") = \"IP=\" & request.servervariables(\"REMOTE_ADDR\") & \"&Tid=\" & Time() & \"&Dato=\" & date() & \"\"

application.lock
application(\"activeusers\") = application(\"activeusers\") + 1
application.unlock
end sub


Sub Session_OnEnd

\'****** lukker activeusers
application.lock
application(\"activeusers\") = application(\"activeusers\") - 1
application.unlock

\'****** opdater databasen med false
Set RSOnline = Server.CreateObject(\"ADODB.RecordSet\")
sqlOnline = \"UPDATE users SET Online = false WHERE id = \'\"& session(\"id\") & \"\'\"
set rsOnline = myConn.execute(sqlOnline)

end sub
</script>

Avatar billede chris Nybegynder
23. januar 2001 - 12:54 #12
forresten tag jer ikke af at jeg kalder dette:
rs(\"Browser\") = navn ... hehe det er fordi at jeg har forsøgt at lege med forskellige ting, og har ikke gidet at opdatere DB\'en :-)
Avatar billede soerens Nybegynder
23. januar 2001 - 13:19 #13
Har du prøvet at starte din NT Event Viewer op og kigge i Application loggen for at se om der er nogen fejlmeddelelser her ang. GLOBAL.ASA?

/SørenS.
Avatar billede chris Nybegynder
23. januar 2001 - 13:58 #14
Der er ingen fejl omkring ASP.dll\'en eller global.asa i event-viewer
Avatar billede tpiil Nybegynder
23. januar 2001 - 14:07 #15
har du prøvet at lave denne linie om til dette:??
sqlOnline = \"UPDATE users SET Online = false WHERE id=\" & session(\"id\")
Avatar billede soerens Nybegynder
23. januar 2001 - 14:10 #16
Yep, det var en anden ting. ID plejer at være en numerisk datatype, og så skal den ikke sættes i \'.

...stadigvæk, sjovt at du ikke får en entry i din eventlog...

/SørenS.
Avatar billede chris Nybegynder
23. januar 2001 - 15:20 #17
tpiil: det virker ikke.

det er som om at \"UPDATE users SET Online ...\" slet ikke bliver udført ?
Avatar billede soerens Nybegynder
23. januar 2001 - 15:32 #18
Prøv (for at teste det) at sætte id til noget fast som du kender, altså:

sqlOnline = \"UPDATE users SET Online=false WHERE id=3\"

Øh, er det forresten en Access database eller?

/SørenS.
Avatar billede chris Nybegynder
23. januar 2001 - 16:23 #19
det er sgu lidt weird dette her....det virkede heller ikke Søren

ja det er en Access.... det ville du også kunne se i min myConn.Open :-)

Avatar billede chris Nybegynder
23. januar 2001 - 22:11 #20
hrrrrmff Session_OnEnd ?? det er sgu noget weird noget.

Jeg prøvede at flytte:
application.lock
application(\"activeusers\") = application(\"activeusers\") - 1
application.unlock

ned under mit database kald, og så virkede min \"activeusers\", ikke. mon man kun kan udføre én ting under Session_OnEnd ?
Avatar billede bocker Nybegynder
24. januar 2001 - 00:18 #21
Prøv at erstat:

Set RSOnline = Server.CreateObject(\"ADODB.RecordSet\")
sqlOnline = \"UPDATE users SET Online = false WHERE id = \'\"& session(\"id\") & \"\'\"
set rsOnline = myConn.execute(sqlOnline)

Med:

myConn.Execute(\"UPDATE users SET Online=false WHERE ID=\" & Session(\"id\"))
Avatar billede chris Nybegynder
24. januar 2001 - 00:57 #22
Jamen dog..... jeg fandt fejlen.

Jeg læste denne side:
http://msdn.microsoft.com/library/psdk/iisref/glob2y90.htm

hvor der står:
Remarks
You cannot call the MapPath method in the Session_OnEnd script.

hrrrmf det vil sige at jeg ikke kunne bruge DSN-Less forbindelse.
Jeg har nu lavet en DNS med ODBC på serveren, og nu virker det.....herligt.
Avatar billede chris Nybegynder
24. januar 2001 - 00:57 #23
søren: du får lige lidt point for at du gad at bruge din tid på mit problem
Avatar billede soerens Nybegynder
24. januar 2001 - 08:43 #24
Argh, den burde jeg have set ;-)

Held & Lykke med det!

/SørenS.
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