global.asa on Session end?

ASP

20 svar · 355 visningar · startad av M@rtin

Medlem sedan dec. 19992 085 inlägg
Trådstart#1

hur gör man om man vill att vissa saker ska hända när en session raderas på servern?
Alltså:
När man loggar in på min sida så sätts status o medlemsdatabasen till "online" och en session("anvandarnamn") lagrar användarnamnet. När man varit inaktiv i 20 min så försvinner Sessionen men jag vill då även ändra status i databasen till "offline" hur får man då tag i Session("anvandarnamn") i global.asa och måste man ha includerat global.asa på alla sidor för att det ska fungera?

Medlem sedan dec. 19996 721 inlägg
#2

Du kan plocka ut Session("anvandarnamn") i global.asa utan problem. Vad är problemet?

Sub Session_OnEnd
.....blablabla

conn.execute "UPDATE tabell set online=0 where username='" & session(anvandarnamn") & "'"

End Sub

Global.asa ska aldrig inkluderas, aldrig någonsin. Den ska bara ligga på sin plats i applikationsroten.

Medlem sedan dec. 19992 085 inlägg
#3

Nähä nej då var det väl inget problem då ;)
Fick massa felmeddelanden när jag inkluderade den... det var Skywalker (Bire) som lurade mig ;)

Medlem sedan dec. 19992 085 inlägg
#4

Nu har jag gjort typ som du sa men jag får det ändå inte att fungera :(

Så här ser min global.asa ut, vad är felet?

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

Sub Session_OnEnd

Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MinCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\clients\peachy.nu\scripts\databaser\medlem.mdb"
SQL = "UPDATE medlem SET status = 'Offline' WHERE anvandarnamn = '" & Session("anvandarnamn") & "'"
rs.Open SQL, MinCon, 1, 2
Session("level")=0
Session("anvandarnamn")=""
Session("losenord")=""
Session("connected")=0
Session("visits")=0
Session("lastvisit")=""

End Sub
</OBJECT>
Medlem sedan juni 200032 967 inlägg
#5

varför använder du recordset öht :q

varför sätter du värden till sessioner i _onend?

sätt endast sessioner i _onstart.
vad ska du ha dem till efter _onend?

Sub Session_OnEnd

Set MinCon = Server.CreateObject("ADODB.Connection")
MinCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\clients\peachy.nu\scripts\databaser\medlem.mdb"
SQL = "UPDATE medlem SET status = 'Offline' WHERE anvandarnamn = '" & Session("anvandarnamn") & "'"
MinCon.execute (SQL)
Medlem sedan dec. 19992 085 inlägg
#6

Jo jag vet att det kanske e onödigt.. tänkte för säkerhets skull bara om de inte skapades samtidigt eller nåt.. men de borde väl inte göra att det inte funkar eller?
Testar med ditt sätt nu iaf :)

Medlem sedan dec. 19992 085 inlägg
#7

Ush va trött jag e på detta nu. Nu har jag tagit bort alla nollställningar etc. men det funkar ändå inte.. Man kan väl inte behöva ha en on start oxå för att det ska funka? Jag kan inte ha lagt den i fel katalog på servern heller för jag har lagt den i både roten och den där själva sidan ligger... hjälp mig jag blir tokig :(

Medlem sedan juni 200032 967 inlägg
#8

kan du få global.asa att utföra något öht?

Medlem sedan dec. 19992 085 inlägg
#9

Vet inte.. har du nån enkel o felfri kod som jag skulle kunna testa med?

Medlem sedan juni 200032 967 inlägg
#10

du kan ju exempelvis sätta application("test") = "gröfs" i application_onstart, och sedan skriva ut värdet på valfri asp-sida.

Medlem sedan dec. 19992 085 inlägg
#11

ja jag ska testa det.. jag återkommer.. :)

Medlem sedan dec. 19992 085 inlägg
#12

Nej det verkar typ inte funka alls :(
Ska man ha den här raden överst i global.asa?
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">

Medlem sedan juni 200032 967 inlägg
#13

ligger sajten på ett hotell?
eller pratar vi om din lokala utvecklingsserver / maskin?

om hotell, är du säker på att du har möjlighet att använda global.asa? det är inte alltid man har det, ser du.

Medlem sedan dec. 19992 085 inlägg
#14

Hmm... jag kör på www.netintense.se o det gör Vide oxå så jag trodde det skulle funka men jag kan ju inte vara helt säker..

Har testat i PWS oxå men där vet jag inte riktigt hur man ska göra... vilken mapp det ska vara etc.

Medlem sedan dec. 19998 577 inlägg
#15

Kan bara konstatera att global.asa fungerar som det skall på netintense...

Se till att global.asa ligger i rooten på din webplats (din_domän.com)

Medlem sedan dec. 19992 085 inlägg
#16

Ja det har jag gjort Vide men kan du visa exakt hur det står i din? Asså du kan ju ta bort det du inte vill visa o så men det e mest det här OBJECT jag e intresserad utav...

Medlem sedan dec. 19998 577 inlägg
#17

Med all viktig kod borttagen så ser det ut såhär:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
	Application("intActive_users") = Application("intActive_users") + 1

	Application("visitors") = Application("visitors")+1
End Sub

Sub Session_OnEnd

	Application("visitors") = Application("visitors")-1
	Application("intActive_users") = Application("intActive_users") - 1
	
End Sub

Sub Application_OnStart
	Application("visitors") = 0
	Application("intActive_users") = 0
	Application("DBstr") = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("/scripts/xxx.mdb") & ";"
End Sub

Sub Application_OnEnd

End Sub
</SCRIPT>
Medlem sedan dec. 19992 085 inlägg
#18

Jippie! Nu funkar det... :) jag hade Object istället för Script :(
1K tack till er alla..

Medlem sedan dec. 19998 577 inlägg
#19

Vassego... :)

Medlem sedan dec. 1999653 inlägg
#20

såg att du fått de å funka nu, grattis... men jag tänkte på en grej... e de inte bättre att använda Id:t istället?

nu har du

Sub Session_OnEnd
Set MinCon = Server.CreateObject("ADODB.Connection")
MinCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\clients\peachy.nu\scripts\databaser\medlem.mdb"
SQL = "UPDATE medlem SET status = 'Offline' WHERE anvandarnamn = '" & Session("anvandarnamn") & "'"
MinCon.execute (SQL)

men jag föreslår istället:

Sub Session_OnEnd
Set MinCon = Server.CreateObject("ADODB.Connection")
MinCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\clients\peachy.nu\scripts\databaser\medlem.mdb"
SQL = "UPDATE medlem SET status = 'Offline' WHERE id = '" & Session("id") & "'"
MinCon.execute (SQL)

det som är ändrat är:
SQL = "UPDATE medlem SET status = 'Offline' WHERE id = '" & Session("id") & "'"

jag tror detta skulle bli säkrare än med medlemsnamnet utifall man har något olagligt tecken eller så med?

aja, bara ett förslag :e

MVH

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)