Avatar billede lordnelson Seniormester
07. januar 2007 - 09:49 Der er 16 kommentarer og
1 løsning

Er sessionID aktiv

Hej
Hvis jeg har gemt et sessionID i en DB
er der så mulighed for at checke om det sessionID stadig er aktiv?

LN
Avatar billede kalp Novice
07. januar 2007 - 10:53 #1
Hvis sessionID er det unike id serveren generere så kan du vel løbe en tabellen igennem og tjekke sådan

if Session.SessionID = rs("sessionID")  then
Response.write "Aktiv
else
Response.write "ikke aktiv"
end if

men en god ide er lige at undersøge om sessionID'er bliver genbrugt... altså hvis du logger af serveren om en anden så kan få dit sessionID eller om der går en periode og det kan bruges igen.
Avatar billede lordnelson Seniormester
07. januar 2007 - 11:19 #2
Jo den kan jeg godt se,
men det er vel for den enkelte bruger
Hvis jeg skriver Session.SessionID hvad er det så for et Id jeg får
det jeg var ude efter var at se om de ( jeg har(kan have) flere)
sessionID i db'en , om de har forladt siden eller ej.
F.eks jeg har 10 sessionID i Db'en er der så en mulighed for at se
om de er aktive.

Hilsen
LN
Avatar billede kalp Novice
07. januar 2007 - 14:08 #3
jeg er skam ikke sikker... men måske kan du gøre sådan her


<%
for each x in Session.SessionID
if x = rs("sessionID")  then
Response.write x + "er aktiv"
else
Response.write x+ "er ikke aktiv"
end if
next
%>
Avatar billede lordnelson Seniormester
07. januar 2007 - 15:08 #4
Næ den går ikke
For fejl på
for each x in Session.SessionID
fejl:
Object not a collection
ln
Avatar billede kalp Novice
07. januar 2007 - 15:28 #5
hvis du ikke kan gøre sådan her så ved jeg ikke rigtigt hvordan det skal gøres.. det her giver dig en collection i hvertfald, men måske også mere end hvad du har behov for (altså hvis du har gemt andre ting i session)
men ved ikke.. måske kan man også lave et tjek på om det er et sessionid man hiver ud og så vil det jo virke.

<%
for each x in Application.Contents
if Application.Contents(x) = rs("sessionID")  then
Response.write Application.Contents(x) + "er aktiv"
else
Response.write Application.Contents(x)+ "er ikke aktiv"
end if
next
%>
Avatar billede lordnelson Seniormester
07. januar 2007 - 16:05 #6
Hmmmmmmmmm
Her får jeg kun stringen fra min db UD

LN
Avatar billede Slettet bruger
07. januar 2007 - 16:17 #7
Hej
Du skal jo gemme hver aktive brugers session.ID i en application i global.asa-filen først. Så kan du trække den ud på en asp-side... Sådan her:

global.asa:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
application("aktive")=null
End Sub
Sub Session_OnStart
Session.Timeout = 20
Application.Lock
application("aktive")=application("aktive") & session.ID & ";"
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
application("aktive")=replace(application("aktive"),session.ID & ";","")
Application.Unlock
End Sub
</SCRIPT>

- vær opmærksom på at din global.asa kan sagtens indeholde noget andet i forvejen som din webside måske også bruger...

- Nå, men den side du gerne vil have listen vist på kunne så se sådan her ud:

<%
if application("aktive")<>"" then
set conn = Server.CreateObject("ADODB.Connection")
conn.open("Driver={MicroSoft Access Driver (*.mdb)};DBQ=" & server.mappath("data.mdb"))
strAktive = split(application("aktive"),";")
for a=0 to (ubound(strAktive)-1)
set rs = conn.execute("select * from tabel where id=" & strAktive(a) & "")
if NOT rs.EOF then
%>
<%=strAktive(a)%> er aktiv nu...<br>
<%
rs.close
set rs=nothing
end if
next
conn.close
set conn=nothing
end if
%>

- det afhængiger selvfølgelig lidt af hvad de forskellige ting hedder i din database men ellers skulle dette her virke...

\Dan
Avatar billede Slettet bruger
07. januar 2007 - 16:21 #8
vupti... asp-filen skulle se sådan her ud:

<%
if application("aktive")<>"" then
set conn = Server.CreateObject("ADODB.Connection")
conn.open("Driver={MicroSoft Access Driver (*.mdb)};DBQ=" & server.mappath("data.mdb"))
strAktive = split(application("aktive"),";")
for a=0 to (ubound(strAktive)-1)
set rs = conn.execute("select * from tabel where id=" & strAktive(a) & "")
if NOT rs.EOF then
%>
<%=strAktive(a)%> er aktiv nu...<br>
<%
end if
rs.close
set rs=nothing
next
conn.close
set conn=nothing
end if
%>

- beklager...

\Dan
Avatar billede lordnelson Seniormester
28. januar 2007 - 19:39 #9
Ok
Sender du et svar

LN
Avatar billede Slettet bruger
28. januar 2007 - 19:50 #10
hehe - OK!

\Dan
Avatar billede lordnelson Seniormester
28. januar 2007 - 19:59 #11
Fik nu ikke den til at virke melder fejl
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'Session.ID'

i linien i global.asa
application("aktive")=application("aktive") & session.ID & ";"

LN
Avatar billede Slettet bruger
28. januar 2007 - 21:10 #12
arh... ok... ved nærmere eftertanke så skal din session.ID nok defineres til en regulær session inden vi kan sætte den global.asa så... noget a la det her så...

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
application("aktive")=null
End Sub
Sub Session_OnStart
Session.Timeout = 20
Application.Lock
application("aktive")=application("aktive") & session("id") & ";"
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
application("aktive")=replace(application("aktive"),session("id") & ";","")
Application.Unlock
End Sub
</SCRIPT>


<%
application("aktive")=replace(appclication("aktive"),session.ID & ";","")
session("id")=session.ID
if application("aktive")<>"" then
set conn = Server.CreateObject("ADODB.Connection")
conn.open("Driver={MicroSoft Access Driver (*.mdb)};DBQ=" & server.mappath("data.mdb"))
strAktive = split(application("aktive"),";")
for a=0 to (ubound(strAktive)-1)
set rs = conn.execute("select * from tabel where id=" & strAktive(a) & "")
if NOT rs.EOF then
%>
<%=strAktive(a)%> er aktiv nu...<br>
<%
end if
rs.close
set rs=nothing
next
conn.close
set conn=nothing
end if
%>

\Dan
Avatar billede lordnelson Seniormester
28. januar 2007 - 21:52 #13
Okay
min global.asa ser således ud, ved ikke om det er rigtigt
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Application_OnStart

Application("database") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\pcg\kursus.mdb;Jet OLEDB:Database "


application("sql") = "Provider=sqloledb;Data Source=xxxxxx;Initial Catalog=xxx;UID=xxxxxxxx;password=xxxxxxx;;"

application("sql2") = "Provider=sqloledb;Data Source=xxxxxxx;Initial Catalog=xxxxxx;UID=xxxxx;password=xxxxxx;;"

application("aktive")=null
END SUB

Sub Session_OnStart
Session.Timeout = 20
Application.Lock
application("aktive")=application("aktive") & session("id") & ";"
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
application("aktive")=replace(application("aktive"),session("id") & ";","")
Application.Unlock
End Sub
Og asp siden ser således ud
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
application("aktive")=replace(appclication("aktive"),session.ID & ";","")
session("id")=session.ID
if application("aktive")<>"" then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("sql")
strAktive = split(application("aktive"),";")
for a=0 to (ubound(strAktive)-1)
set rs = conn.execute("select * from tabel where id=" & strAktive(a) & "")
if NOT rs.EOF then
%>
<%=strAktive(a)%> er aktiv nu...<br>
<%
end if
rs.close
set rs=nothing
next
conn.close
set conn=nothing
end if


%>
Når jeg kører asp siden får jeg fejlen:
Microsoft VBScript runtime error '800a000d'

Type mismatch: 'appclication'

/checksession.asp, line 3

Hilsen
Ln



</SCRIPT>
Avatar billede Slettet bruger
28. januar 2007 - 22:51 #14
OK... Det er fordi der står "appclication" og ikke "application" - det er formentlig en slåfejl og hvis det er mig der har lavet den beklager jeg dette...

Hvad er de her linjer for noget:

Application("database") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\pcg\kursus.mdb;Jet OLEDB:Database "


application("sql") = "Provider=sqloledb;Data Source=xxxxxx;Initial Catalog=xxx;UID=xxxxxxxx;password=xxxxxxx;;"

application("sql2") = "Provider=sqloledb;Data Source=xxxxxxx;Initial Catalog=xxxxxx;UID=xxxxx;password=xxxxxx;;"

Hvorfor et databaseopkald i din global.asa?

\Dan
Avatar billede Slettet bruger
28. januar 2007 - 22:52 #15
der skal stå:
application("aktive")=replace(application("aktive"),session.ID & ";","")

i stedet...

SORRY!

\Dan
Avatar billede lordnelson Seniormester
29. januar 2007 - 10:05 #16
Nemmere at kalde data herfra og ændre dem hurtigt til en anden syntes jeg

Får stadig fejl:
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'session.ID'

/checksession.asp, line 3
Avatar billede lordnelson Seniormester
04. april 2007 - 09:35 #17
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester