Kommunikationsscript im Intranet unter IIS 6 und PHP + MySQL?

preko

Erfahrenes Mitglied
Hi,

ich möchte ein Kommunikationsscript unter dem IIS6 (Win-Server 2003) mit PHP und MySQL Implementierung umsetzen.

Dieses soll Datenbankgespeicherte Nachrichten von einem User zum anderen darstellen - und anzeigen ob der "gegenüber" gerade online ist.

Wie schaffe ich es, die IP der eigeloggten User so lange zu speichern wie der User im Kommunikationsmodul "unterwegs" ist (mit welcher Syntax frage ich die IP nochmal ab? Habs schon mal gemacht aber wieder vergessen :( )? Geht das über eine Schleifen abfrage, die sich alle X-Sekunden wiederholt und den IP-Eintrag in der Datenbank aktualisiert?

Das Problem ist, dass ich den Logout des Users als Zeitpunkt des Verlassens nehmen könnte und die IP dann lösche, aber ich weis nicht genau, wie ich es abfangen soll, wenn der User einfach nur den Browser schliesst (z.B. Kreuz rechts oben im Browserfenster) ohne sich auszuloggen? Es muß also sicherlich eine zusätzliche periodische Abfrage parallel laufen.
Außerdem bewegen sich die User im Intranet, so dass ja die IP´s weiterhin bestehen, solange sich die Anwender eingeloggt auf dem System befinden, oder etwa nicht?

Wie Ihr seht macht mich das ganze reichlich Konfuzius.

Gibt es da eine Anleitung, die Ihr parat habt, eventl. auch eine Webadresse mit einen Tutorial?

Besten Dank im voraus.

Viele Grüße,
preko
 
Hallo

Wenn sich jemand deiner User anmeldet wird er in eine Tabelle eingetragen.

Wenn er sich abmeldet holst du ihn einfach aus dieser Tabelle wieder
raus.

Bei jedem Aufruf deines System checkst du einfach die Tabelle, so kannst
du bei jedem anzeigen wer noch online ist.

Mittels Java Skript kannst du beim schießen des Browserfensters ein
Skript aufrufen, welches den User aus der Tabelle löscht.

So sollte es funktionieren.

mfg
 
@ultrakollega:

vielen Dank für den Tipp - mit JavaScript ein "Löschscript" aufzurufen ist ein guter Ansatz, gibt es allerdings noch eine andere Möglichkeit für die, die Javascript abgeschaltet haben? :confused:

Vielen Dank nochmals und

beste Grüße,
preko
 
PHP-Scripts werden beim Aufruf abgearbeitet und dann beendet. Sobald der User die Ausgabe des Scripts im Browser sieht, kann man im Normalfall schon davon ausgehen, dass das Script bereits beendet worden ist. Deshalb gibt es keine Möglichkeit, eine von dir angesprochene Schleife die ganze Zeit durchlaufen zu lassen oder Ähnliches.

Eine Möglichkeit zu überprüfen, ob ein User noch "online" ist, wäre den Zeitstempel mit der IP in der Datenbank zu speichern und bei jedem Scriptaufruf alle Zeiten in der "Gerade online"-Tabelle zu überprüfen. Ist der Zeitstempel dort älter als beispielsweise zehn Minuten, gehst du davon aus, dass der User offline gegangen ist und löschst die IP aus der Datenbank.

Die IP fragst du mit $_SERVER['REMOTE_ADDR'] ab.
 
Original geschrieben von ludz
...Ist der Zeitstempel dort älter als beispielsweise zehn Minuten, gehst du davon aus, dass der User offline gegangen ist und löschst die IP aus der Datenbank...

Hi ludz,

vielen Dank für die Tipps! :)

Das ist leider keine genaue Angabe der Onlineuser, die ich jedoch in diesem Falle zwingend benötige, da sich ein User durchaus auch länger im System befinden kann als 10 min..
Da ein Teil der Firmeninternen Kommunikation über dieses Script ablaufen soll, besteht durchaus die Möglichkeit einer längeren "Online"-Sitzung.

Beste Grüße,
preko
 
Mit "online" und "offline" meinte ich in diesem Falle "im Kommunikationsmodul 'unterwegs'" bzw. "... nicht 'unterwegs'" ;)
 
ludz hat gesagt.:
Mit "online" und "offline" meinte ich in diesem Falle "im Kommunikationsmodul 'unterwegs'" bzw. "... nicht 'unterwegs'" ;)

Hi ludz,

ich hatte Dich richtig verstanden.

Was ich meinte, war, dass aufgrund der Konstellation der Umgebung (Intranet) ein User ja eine IP adresse hat, die besteht, solange er unter seinem Benutzernamen/Account eingeloggt ist. Account bezieht sich hier auf die Benutzerumgebung am Arbeitsplatz, nicht auf das Intranet.

Leider wird aber die IP nicht beim Einloggen ins Intranet neu vergeben, sondern besteht weiter solange der User überhaupt in seiner Arbeitsumgebung unterwegs ist (Server mit DHCP/DNS).

So ist es daher egal ob er sich ins Intranet einloggt oder ausloggt - die IP besteht solange, solange der User überhaupt am Rechner ist, d. h. er kann durchaus aus dem Intranet schon raus sein, aber die IP besteht weiter - da er noch im (Arbeitsplatz-)System drin ist. Das ist das Problem, da der Webserver auch auf dem Firmenserver "beheimatet" ist.

Ich hoffe, ich habe mich jetzt nicht zu umständlich ausgedrückt. :)

Daher denke ich, dass die Lösung mit dem JavaScript für diesen Fall die zuverlässigste sein wird.


Besten Dank und viele Grüße,
preko
 
Ähm ja, das war mir schon klar. Und genau deshalb sollte mit der IP auch gleichzeitig der Zeitstempel gespeichert sein. Die IP bleibt zwar immer gleich, aber wenn der Zeitstempel zu besagter IP beispielsweise schon älter als 10 Minuten ist (d.h. der letzte Klick dieses Users schon über 10 Minuten her ist), dann setzt du einfach fest / nimmst an, dass der User den Kommunikationsbereich verlassen hat.

Verstehst du jetzt, was ich meine?
 
@ ludz:

:) Ich glaube, wir drehen uns im Kreise. Ich hatte Dich auch verstanden.

Das Problem ist nur, dass ich wirklich eine exakte Darstellung der Onlineuser brauche. Deine Variante wäre nicht genau genug.


Beste Grüße,
preko
 
Zurück