webForumDet fria alternativet

session tid

14 svar · 386 visningar · startad av icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#1

jag tänkte så här:
En user loggar in på min site, från det ögonblicket vill jag ta tid hur länge han/hon är kvar där.

För att sedan lägga in allt i en db som ser ut på följande vis:

-T_REGTID
  ·F_USER_ID
  ·F_REGTID_START
  ·F_REGTID_SLUT
  ·F_REGTID_TOTAL

När hon/han loggar in får hon/han alltså ett USER_ID.

Måste jag lägga till ett fält för Session.SessionID osso?? :q (läste det nånstans)

------------------
I like ¼ £ whith cheese

icaaqMedlem sedan okt. 20005 273 inlägg
#2

jag har alltså tänkt mig att använda on_session_end, men det kanske ni förstod :)

------------------
I like ¼ £ whith cheese

@ndersMedlem sedan juni 200032 969 inlägg
#3

session_onend menar du? ;)

session.sessionid är lämpligt att använda. du kan ställa databasfrågor i session_onstart och session_onend i global.asa.

vad är frågan egentligen? :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

icaaqMedlem sedan okt. 20005 273 inlägg
#4

hur använder jag Session.SessionID?? :OO

------------------
I like ¼ £ whith cheese

@ndersMedlem sedan juni 200032 969 inlägg
#5

sessionid är bara en massa skräp, men det som är skoj är ju att alla användare har olika, fast samma, så länge sessionen är igång om du fattar. ;)

response.write session.sessionid

du kan ha den som nyckel i en tabell som håller inloggningarna, men du kan lika gärna göra en session som håller userid och använda userid som nyckel.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

icaaqMedlem sedan okt. 20005 273 inlägg
#6

ok nu har jag:

Sub Session_OnEnd
	Set Objconn = Server.CreateObject("ADODB.Connection") 
			Objconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPathXXX/XXX")
			Objconn.open
	strSQL = "INSERT INTO T_REGTID(F_REGTID_START, F_REGTID_SLUT, F_REGTID_TOTAL, F_USER_ID)VALUES(#"&Session("dteRegStart")&"#, #"&Now()&"#, #"&(Now()-Session("dteRegStart"))&"#, "&Session("MMID")&")"
	ObjConn.execute(strSQL)
	ObjConn.Close
	set objConn = nothing
End Sub

men inget klommer in i db vid en session.abandon

vad kan vara fel??? :OO

------------------
I like ¼ £ whith cheese

[Redigerat av icaaq den 26 jul 2001]

icaaqMedlem sedan okt. 20005 273 inlägg
#7

kan man skriva ut en sql-sats som ligger i global.asa?

------------------
I like ¼ £ whith cheese

icaaqMedlem sedan okt. 20005 273 inlägg
#8

ok jag får följande:

INSERT INTO T_REGTID(F_REGTID_START, F_REGTID_SLUT, F_REGTID_TOTAL, F_USER_ID)VALUES(#2001-07-28 15:10:41#, #2001-07-28 15:13:38#, #2,04861110978527E-03#, 1) 
Microsoft JET Database Engine error '80040e14' 

Syntaxfel i datum i frågeuttrycket '#2'. 

/abandon.asp, line 7

det blir alltså fel när jag ska få fram den totala tiden....hur får jag fram den rätt?? :q

strSQL = "INSERT INTO T_REGTID(F_REGTID_START, F_REGTID_SLUT, F_REGTID_TOTAL, F_USER_ID)VALUES(#"&Session("dteRegStart")&"#, #"&Now()&"#, #"&[b](Now()-Session("dteRegStart"))[/b]&"#, "&Session("MMID")&")"
ObjConn.execute(strSQL)

:)

------------------
I like ¼ £ whith cheese

icaaqMedlem sedan okt. 20005 273 inlägg
#9

Tiden har jag fixat :) Tack LarsG, men jag har ett annat problem:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Session_OnEnd

	tmeLogOn = Session("dteRegStart")
	tmeLoggade = f_tmeLoggad(tmeLogOn)
		
	Set Objconn = Server.CreateObject("ADODB.Connection") 
			Objconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../data/medimatch.mdb")
			Objconn.open
	strSQL = "INSERT INTO T_REGTID(F_REGTID_START, F_REGTID_SLUT, F_REGTID_TOTAL, F_USER_ID)VALUES(#"&Session("dteRegStart")&"#, #"&Now()&"#, #"&Cdate(tmeLoggade)&"#, "&Session("MMID")&")"
	Response.Write strSQL
	ObjConn.execute(strSQL)
	ObjConn.Close
	set objConn = nothing
	
End Sub

Function f_tmeLoggad(tmeLogOn)
tmeLogOff = Now()
tmeDiff = DateDiff("s", tmeLogOn,tmeLogOff)
tmeDiffsek = Fix(tmeDiff mod 60)
tmeDiffmin = Fix(tmeDiff / 60) mod 60 
tmeDifftimme = Fix(tmeDiff / 3600)
If tmeDiffsek < 10 Then tmeDiffsek = "0"&tmeDiffsek
If tmeDiffmin < 10 Then tmeDiffmin = "0"&tmeDiffmin
If tmeDifftimme < 10 Then tmeDifftimme = "0"&tmeDifftimme
f_tmeLoggad = tmeDifftimme&":"&tmeDiffmin&":"&tmeDiffsek
End Function

</SCRIPT>

Så här ser min global.asa ut nu men när jag kör en Session.Abandon så kommer det inte in något i db.mdb nån som ser nåt fel....?? :q (Jag har kört denna på en vanlig .asp och det har gått bra)

------------------
I like ¼ £ whith cheese

[Redigerat av icaaq den 30 jul 2001]

icaaqMedlem sedan okt. 20005 273 inlägg
#10

*Sliter mitt hår*

Nu har jag testat så här i en fil som heter abandon.asp och den ligger i samma rotnivå som Global.asa:

	<%
	Dim tmeLogOn, tmeLoggad
Sub test	
	tmeLogOn = Session("dteRegStart")
	tmeLoggad = f_tmeLoggad(tmeLogOn)
		
	Set Objconn = Server.CreateObject("ADODB.Connection") 
			Objconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../data/XXX.mdb")
			Objconn.open
	strSQL = "INSERT INTO T_REGTID(F_REGTID_START, F_REGTID_SLUT, F_REGTID_TOTAL, F_USER_ID)VALUES(#"&Session("dteRegStart")&"#, #"&Now()&"#, #"&Cdate(tmeLoggad)&"#, "&Session("MMID")&")"
	Response.Write strSQL
	ObjConn.execute(strSQL)
	ObjConn.Close
	set objConn = nothing
	
End Sub
	
	Function f_tmeLoggad(tmeLogOn)
tmeLogOff = Now()
tmeDiff = DateDiff("s", tmeLogOn,tmeLogOff)
tmeDiffsek = Fix(tmeDiff mod 60)
tmeDiffmin = Fix(tmeDiff / 60) mod 60 
tmeDifftimme = Fix(tmeDiff / 3600)
If tmeDiffsek < 10 Then tmeDiffsek = "0"&tmeDiffsek
If tmeDiffmin < 10 Then tmeDiffmin = "0"&tmeDiffmin
If tmeDifftimme < 10 Then tmeDifftimme = "0"&tmeDifftimme
f_tmeLoggad = tmeDifftimme&":"&tmeDiffmin&":"&tmeDiffsek
End Function

Call test
	%>

Och den funkar precis som den ska.. :)

Men kör jag på detta vis i global.asa:

Dim tmeLogOn, tmeLoggad

Sub Session_OnEnd
	tmeLogOn = Session("dteRegStart")
	tmeLoggade = f_tmeLoggad(cdate(tmeLogOn))

		
	Set Objconn = Server.CreateObject("ADODB.Connection") 
			Objconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../../data/medimatch.mdb")
			Objconn.open
	strSQL = "INSERT INTO T_REGTID(F_REGTID_START, F_REGTID_SLUT, F_REGTID_TOTAL, F_USER_ID)VALUES(#"&tmeLoggOn&"#, #"&Now()&"#, #"&tmeLoggade&"#, "&Session("MMID")&")"
	ObjConn.execute(strSQL)
	ObjConn.Close
	set objConn = nothing
	

End Sub

Function f_tmeLoggad(tmeLogOn)
tmeLogOff = Now()
tmeDiff = DateDiff("s", tmeLogOn,tmeLogOff)
tmeDiffsek = Fix(tmeDiff mod 60)
tmeDiffmin = Fix(tmeDiff / 60) mod 60 
tmeDifftimme = Fix(tmeDiff / 3600)
If tmeDiffsek < 10 Then tmeDiffsek = "0"&tmeDiffsek
If tmeDiffmin < 10 Then tmeDiffmin = "0"&tmeDiffmin
If tmeDifftimme < 10 Then tmeDifftimme = "0"&tmeDifftimme
f_tmeLoggad = tmeDifftimme&":"&tmeDiffmin&":"&tmeDiffsek	

End Function

Så blir inget inlagt.....VARFÖR :OO (snälla hjälp mig *ynklig*)

[redigerat in functionen som jag glömde....
------------------
I like ¼ £ whith cheese

[Redigerat av icaaq den 01 aug 2001]

icaaqMedlem sedan okt. 20005 273 inlägg
#11

Om jag kör en Session.Abandon
ska inte Session_OnEnd kicka igång da ?? :OO

------------------
I like ¼ £ whith cheese

@ndersMedlem sedan juni 200032 969 inlägg
#12

jo, men inte förrän absolut sist.
gör alltid en response.redirect efter abandon, för oberoende av var i koden du lägger abandon körs det sist av asp-kod.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

icaaqMedlem sedan okt. 20005 273 inlägg
#13

Så om jag kör så här:

<%
Session.Abandon
Response.redirect "www.webforum.nu"
%>

på en sida ska det väll funka LR :OO

------------------
I like ¼ £ whith cheese

@ndersMedlem sedan juni 200032 969 inlägg
#14

joda, det jag menar är att saker som står efter session.abandon i koden körs före ändå.

jämför

response.write session("blah")
session.abandon

med

session.abandon
response.write session("blah")

samma resultat.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

icaaqMedlem sedan okt. 20005 273 inlägg
#15

ok...men det löser inte mitt problem.....nu har jag en simpel kod fnutt på session_OnEnd:

Sub Session_OnEnd

	Set Objconn = Server.CreateObject("ADODB.Connection") 
			Objconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../../data/XXX.mdb")
			Objconn.open
			strSQL = "INSERT INTO T_REGTID(F_REGTID_TOTAL)VALUES(#"&Now()&"#)"
			ObjConn.execute(strSQL)
			ObjConn.close
	

End Sub

den vet jag funkar...men det kommer inte in något i db ändå..... *FAN*

------------------
I like ¼ £ whith cheese

[Redigerat av icaaq den 01 aug 2001]

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