Håller på att bygga vidare på atikeln "Visa aktiva användare på din webbsajt" som finns här på pellesoft. Vill lagra IP nummer i det recordset som skapas i global.asa filen men det vill inte fungera. Vad gör jag fel? Så här har jag det: Min global.asa fil fungerar bra hittills. Jag upptäckte ett eventuellt fel i koden, kanske beror på detta att det inte fungerade för dig. Sist i Session_OnStart finns följande rad. Koden använder sig av ett disconnected recordset som deklareras i global.asa. Detta är klippt ur Pelles artikel "Visa aktiva användare på din webbsajt". För mer info läs artikeln. Kom på vad jg gjort fel. hade inte deklarerat fälltet ip med tillräkligt många tecken.. Detta funkar bättre:sessioner + global.asa
<code>
Sub Application_OnStart
Const adInteger = 3
Const adVarChar = 200
Const adDate = 7
rstActiveUsers.Fields.Append "id", adInteger
rstActiveUsers.Fields.Append "started", adDate
rstActiveUsers.Fields.Append "userid", adVarChar, 5
rstActiveUsers.Fields.Append "ip", adVarChar, 5
rstActiveUsers.Open
End Sub
Sub Session_OnStart
Session.TimeOut = 20
' peka på första raden om det finns poster i den
If Not rstActiveUsers.EOF Then rstActiveUsers.MoveFirst
rstActiveUsers.AddNew
rstActiveUsers("id") = Session.SessionID
rstActiveUsers("started") = Now()
rstActiveUsers("userid") = Request.Cookies("userid")
rstActiveUsers("ip") = Request.ServerVariables("REMOTE_ADDR") '<--ERROR
rstActiveUsers.Update
' peka på första posten igen
If Not rstActiveUsers.EOF Then rstActiveUsers.MoveFirst
End Sub
</code>Sv: sessioner + global.asa
<code>
strip = Request.ServerVariables("REMOTE_ADDR")
if strip &"X" = "X" then
strip = "No IP"
end if
</code>
Och så plockar du bara in strip i ditt recordset.
För min del så lyckades jag aldrig att få igång global.asa tillförlitligt, utan jag la detta i en include fil på den första sidan som man kom in på.
Jag utveklade sedan systemet så att jag la ett liknande script på alla mina sidor, och kunde alltså se vad folk var mest intresserade av.Sv: sessioner + global.asa
Kommentaren säger peka på första posten fast i koden står det ju rstActiveUsers.MoveLast. När jag bytte till MoveFirst fungerade det.
<code>
' peka på första posten igen
If Not rstActiveUsers.EOF Then rstActiveUsers.MoveLast
</code>
Tack för dit tips men det fungerar fortfarande inte med mitt nya fält ip. Jag kan inte lagra någonting i den posten. Har provat:
<code>
rstActiveUsers("ip") = "test"
</code>
Kan det vara något fel på skapandet av "ip"-fältet eller någonting annat jag inte tänkt på.
<code>
rstActiveUsers.Fields.Append "id", adInteger
rstActiveUsers.Fields.Append "started", adDate
rstActiveUsers.Fields.Append "userid", adVarChar, 5
rstActiveUsers.Fields.Append "ip", adVarChar, 5
</code>Sv: sessioner + global.asa
"Alltså, ett resultat innehållande data - men det är inte kopplat till någon databas eller server, endast ett objekt som kan användas precis som vanligt, men inte ansluten till någon annan datakälla."
Deklarationen av recordsetet ser ut så här:
<code>
<object RunAT="Server" scope="Application" id="rstActiveUsers" progid="adodb.recordset"></object>
</code
Koden fungerar bra med de fälten som finns med i artikeln fast jag kan inte skapa ett nytt.
/JeppeSv: sessioner + global.asa
<code>
rstActiveUsers.Fields.Append "ip", adVarChar, 15
</code>
En länk till uppdaterad info angående funktioen hittade jag här:
http://216.239.39.104/search?q=cache:a1vPDmT-DzUJ:www.asp101.com/articles/john/activeusers/active_users_2.asp+rstActiveUsers.Update&hl=sv&ie=UTF-8
Cheers!
/J