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.
51 svar · 1 746 visningar · startad av SGuncel
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.
Nån som skulle kunna hjälpa? :D
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.
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.
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>
Att tänka på gällande Session_OnEnd i global.asa: http://www.webforum.nu/showthread.php?t=57495
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>
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.
Okej, men jag aldrig hållit på med global.asa så jag vet ingeting. Fick denna koden från en kille.
<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?
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.
Om man inte användet det. Hur ska man gör då? :S
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
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.
Ingen hjälp?
Visa koden du har nu så kanske vi kan se vad som är fel, det är lite svårt att gissa.
[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]
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"
Funkar fortfarande inte.
Du ska inte ha = efter objConn.open.