Hi !
Wenn ich das richtig verstanden habe, werden Session >Objekte< serverseitig gespeichert, Session >Cookies< clientseitig. (Stimmt das?)
Das ist soweit korrekt.
Wenn ich jetzt Session.Abandon benutze, werden dann alle Sessions serverseitig geloescht? Das wuerde ja dann bedeuten, dass wenn mehrere Benutzer gerade eingeloggt sind, alle ausgeloggt wuerden...das will ich natuerlich nicht. D.h. wahrscheinlich wird mit Session.Abandon nur clientseitig geloescht?
Session.Abandon sorgt dafür, dass die betroffene Session (also nur eine) Serverseitig gelöscht wird, so dass auch wenn ein Client mit dem ehemals passenden Cookie wieder auf die Seite kommt, er keine dazu passende Session mehr findet.
Wenn ich aber jetzt einem Administrator die Moeglichkeit geben moechte, User - die gerade online sind - auszuloggen, wie kann ich das bewerkstelligen? Nur ueber eine Datenbank (o.ae.) in der Online (false/true) abgefragt wird, oder bietet da das Session Objekt auch eine Moeglichkeit?
Tja, die Antwort ist nicht so einfach. Das ist das alte Problem, "wie stelle ich fest wer alles online ist". In der Regel muss man dazu etwas tricksen und sich in der Datenbank Aktivitäten o.ä. protokollieren. Das ist alles etwas lästig, zumal es den Vorteil des Session zerstört: Die Session kann sich ja gerade Daten über die verschiedenen Seiten merken OHNE die Datenbank zu kontaktieren, wenn man das jetzt also trotzdem muss, wäre das sehr schade.
Ich habe mich noch nicht intensiver damit beschäftigt, aber es gibt in ASP noch das APPLICATION-Objekt, das noch überhalb des Session-Objektes steht und globale Daten enthält. Ich glaube allerdings nicht, dass du mit dessen Hilfe sowas bewerkstelligen könntest (außer wieder mit Trick, so a la (keine Ahnung ob die Syntax stimmt):
Admin-Seite:
Application("destroyusers") = "PersonA, PersonB, PersonC"
beliebige Seite:
If (InStr(Application("destroyusers"), Session("Benutzername")) >= 0) then
Session.Abandon
Response.Write("Ihre Session wurde beendet.")
Response.End
end if
Rouven