Hej! i session end så har ju användaren redan lämnat sajten , kanske för 20 minuter sedan om du har defaultinställningar och ingen logga-ut knapp eller så... Ok.. Jo, när man tänker efter så har du ju rätt.. ;) <code>Global.asa och servervariabler..
Har lite problem med min global.asa..
När jag startar upp en session skickar jag in data i en databas.. Detta fungerar utmärkt enligt nedan:
Sub Session_OnStart
Session.TimeOut = 10
dim Connect, onlineSQL, inDatum
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "StoreDB1", "*****", "*****"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open "SELECT TOP 0 * FROM statistik",Connect,3,3
RS.AddNew
RS("ShopID") = 1
RS("SessionID") = Session.SessionID
RS("REMOTE_ADDR") = Request.ServerVariables("REMOTE_ADDR")
RS("InDatum") = Now()
RS("Message") = "Session Start"
RS.Update
RS.Close
Connect.close
End Sub
Men vill jag göra samma sak on end:
Sub Session_OnEnd
dim Connect, offlineSQL
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "StoreDB1", "******", "*******"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open "SELECT TOP 0 * FROM statistik",Connect,3,3
RS.AddNew
RS("ShopID") = 1
RS("SessionID") = Session.SessionID
RS("REMOTE_ADDR") = Request.ServerVariables("REMOTE_ADDR")
RS("InDatum") = Now()
RS("Message") = "Session End"
RS.Update
RS.Close
End Sub
Så får jag meddelande i systemloggen om att request.ServerVariables inte finns..
Har läst på Microsoft support siten att man inte kan använda servervaribler inom Application_OnStart .. Men det ska tydligen fungera med session..
Tar jag bort RS("REMOTE_ADDR") raden så fungerar det bra..
Utom att den inte alltid avsluta sessioner ;)..
Hoppas på bra svar!Sv: Global.asa och servervariabler..
eftersom detta sker utan att en request görs mot webservern så kan du heller inte använda något som ligger i just requestobjektet.
däremot så har det gjorts en request när en session startar , och du kan därmed använda de variablerna...
så du blir nog så illatvungen att lagra remote_addr i en sessionvariabel i session start.
och sedan läsa från den i session end.
typ:
Sub Session_OnStart
Session.TimeOut = 10
dim Connect, onlineSQL, inDatum
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "StoreDB1", "*****", "*****"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open "SELECT TOP 0 * FROM statistik",Connect,3,3
RS.AddNew
RS("ShopID") = 1
RS("SessionID") = Session.SessionID
RS("REMOTE_ADDR") = Request.ServerVariables("REMOTE_ADDR")
Session("REMOTE_ADDR")=Request.ServerVariables("REMOTE_ADDR")
RS("InDatum") = Now()
RS("Message") = "Session Start"
RS.Update
RS.Close
Connect.close
End Sub
Sub Session_OnEnd
dim Connect, offlineSQL
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "StoreDB1", "******", "*******"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open "SELECT TOP 0 * FROM statistik",Connect,3,3
RS.AddNew
RS("ShopID") = 1
RS("SessionID") = Session.SessionID
RS("REMOTE_ADDR") =Session("REMOTE_ADDR")
RS("InDatum") = Now()
RS("Message") = "Session End"
RS.Update
RS.Close
End Sub
//RogerSv: Global.asa och servervariabler..
Kom på att jag egentligen inte behöver IP.. För SessionID ska ju inte kunna vara lika.. Iallafall inte så nära eftervarandra som detta gäller.. Sv: Global.asa och servervariabler..
Const ShopID = 1
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "#" & Month(Value) & "/" & Day(Value) & "/" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value) & ":" & Second(Value) & "#"
Else
SQLDate = "Null"
End If
End Function
Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Sub Session_OnStart
Dim strSQL
Dim Connect
Session.TimeOut = 10
strSQL = "INSERT INTO statistik (ShopID, SessionID, REMOTE_ADDR, InDatum, Message)" & vbCrLf & _
"VALUES (" & ShopID & ", " & Session.SessionID & ", " SQLText(Request.ServerVariables("REMOTE_ADDR")) & ", " & SQLDate(Now()) & ", 'Session Start')"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "StoreDB1", "*****", "*****"
Connect.Execute strSQL
Connect.Close
Set Connect = Nothing
End Sub
Sub Session_OnEnd
Dim strSQL
Dim Connect
strSQL = "INSERT INTO statistik (ShopID, SessionID, REMOTE_ADDR, InDatum, Message)" & vbCrLf & _
"SELECT TOP 1 ShopID, SessionID, REMOTE_ADDR, " & SQLDate(Now()) & ", 'Session END'" & vbCrLf & _
"FROM statistik" & vbCrLf & _
"WHERE SessionID = " & Session.SessionID & vbCrLf & _
"ORDER BY InDatum DESC"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "StoreDB1", "*****", "*****"
Connect.Execute strSQL
Connect.Close
Set Connect = Nothing
End Sub
</code>