webForumDet fria alternativet

Offline efter Session.TimeOut

51 svar · 1 746 visningar · startad av SGuncel

SGuncelMedlem sedan jan. 2007217 inlägg
#1

Jag har sökt i forumet men har kommit fram utan träff som jag vill ha.

Jag vill att användarens status ska bli Offline när sessionen tar slut och när man bara stänger webbläsaren..
Sessionen är 15 min.

SGuncelMedlem sedan jan. 2007217 inlägg
#2

Nån som skulle kunna hjälpa? :D

KrikoMedlem sedan dec. 2006382 inlägg
#3

Du får fixa det i global.asa
Under "sub Session_OnEnd" skriver du din kod för vad som ska göras när sessionen självdör, till exempel ändrar ett värde i en databas.
Sessionen finns kvar att användas i "sub Session_OnEnd" eftersom funktionen körs precis innan sessionen dör.

SGuncelMedlem sedan jan. 2007217 inlägg
#4

Jo, det har jag hör mycket om. Men problemet är att jag har aldrig använt global.asa och vet inte hur det kommer vara.

TroxyMedlem sedan mars 20041 505 inlägg
#5

Skapa en fil i din www-root som du döper till "global.asa", sedan slänger du in den här koden:

<script language="vbscript" runat="server">

sub Session_OnStart
  'ASP-kod som körs när en session startar
end sub

sub Session_OnEnd
  'ASP-kod som körs när en session dör
end sub

</script>
OveRRidEMedlem sedan feb. 200112 078 inlägg
#6

Att tänka på gällande Session_OnEnd i global.asa: http://www.webforum.nu/showthread.php?t=57495

SGuncelMedlem sedan jan. 2007217 inlägg
#7

Använder det men det händer inget.
Ska man döpa det global.asa eller global.asa.asp?

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd

On Error Resume Next
Dim ObjCoon
	Set ObjConn = Server.CreateObject("ADODB.Connection") 
	ObjConn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("*/*/*.mdb")
If err.Number <> 0 Then
  Response.Redirect("Login/")
  err.Clear
End If '## -- err.Number <> 0 --
On Error GoTo 0

Dim strSQL

strSQL = "Update Tblusers set Stats='Offline' Where UsrID="& Session("UsrId") &""
Conn.Execute(strSQL)

Conn.Close
Set conn = Nothing

Response.Redirect("Login/")
End Sub

</SCRIPT>
@ndersMedlem sedan juni 200032 969 inlägg
#8

Ska man döpa det global.asa eller global.asa.asp?

global.asa.

Använder det men det händer inget.

Då får du dubbelkolla koden. Ex. kan du ju kontrollera att du stavar connectionobjektet likadant.
I övrigt kan du inte använda response.redirect i global.asa, och du kan inte komma åt session("usrid"). Det enda du kan komma åt är det sessions-id som webbservern tilldelar (session.sessionid), så du får se till att lagra detta i användartabellen vid inloggning.

Till sist: läs emissions tipstråd om tomsträngskonkatenering.

SGuncelMedlem sedan jan. 2007217 inlägg
#9

Okej, men jag aldrig hållit på med global.asa så jag vet ingeting. Fick denna koden från en kille.

SGuncelMedlem sedan jan. 2007217 inlägg
#10
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd

Dim ObjCoon
  Set ObjConn = Server.CreateObject("ADODB.Connection") 
  ObjConn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("*/*.mdb")

Dim strSQL
strSQL = "UPDATE TLUsers SET UsrStats='Offline' WHERE LastUsrLogin<#"& DateAdd("n",Now(),-15) &"#"
ObjConn.Execute(strSQL)

ObjConn.Close
Set ObjConn = Nothing

End Sub

</SCRIPT>

Denna funkar inte heller. Skulle någon hjälpa mig?

PoffeMedlem sedan apr. 20022 743 inlägg
#11

Börja med att läsa tråden som OveRRidE länkade till här ovan. Där står bl.a. att du inte kan använda mappath i Session_OnEnd.

SGuncelMedlem sedan jan. 2007217 inlägg
#12

Om man inte användet det. Hur ska man gör då? :S

emissionMedlem sedan dec. 19996 721 inlägg
#13

Ange den riktiga sökvägen till mdb-filen direkt. Vet inte vad den är så skriv

Response.Write Server.MapPath("databasen.mdb")

På en asp-sida (inte i global.asa) och klistra in resultatet i global.asa

SGuncelMedlem sedan jan. 2007217 inlägg
#14

emission skrev:

Ange den riktiga sökvägen till mdb-filen direkt. Vet inte vad den är så skriv

Response.Write Server.MapPath("databasen.mdb")

På en asp-sida (inte i global.asa) och klistra in resultatet i global.asa

Har gjort som du sa, men det fungerar inte heller.

SGuncelMedlem sedan jan. 2007217 inlägg
#15

Ingen hjälp?

PoffeMedlem sedan apr. 20022 743 inlägg
#16

Visa koden du har nu så kanske vi kan se vad som är fel, det är lite svårt att gissa.

SGuncelMedlem sedan jan. 2007217 inlägg
#17

[code]<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd

Dim ObjCoon
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("C:\home\xxx\xxx\xxx.xx\xxx\xxxx.mdb ")

Dim strSQL
strSQL = "UPDATE TLUsers SET UsrStats='Offline' WHERE LastUsrLogin<#"& DateAdd("n",Now(),-15) &"#"
ObjConn.Execute(strSQL)

ObjConn.Close
Set ObjConn = Nothing

End Sub

</SCRIPT>[code]

TroxyMedlem sedan mars 20041 505 inlägg
#18

Du använder ju fortfarande Server.MapPath ;)

Skriv den fullständiga sökvägen till databasen direkt i din connection-sträng:

ObjConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\home\xxx\xxx\xxx.xx\xxx\xxxx.mdb"
SGuncelMedlem sedan jan. 2007217 inlägg
#19

Funkar fortfarande inte.

@ndersMedlem sedan juni 200032 969 inlägg
#20

Du ska inte ha = efter objConn.open.

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)