PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbankeintrag nach dem Schließen eines Fensters


kaepten
28.09.2006, 09:10:46
Hallo,

ich habe mir eine kleine Linkdatenbank gestrickt. Bei dieser können User ihre eigenen Links in einem geschützten Bereich speichern und durch die verschiedenen Rubriken navigieren.

Um zu sehen wer auf meine Seite zugreift habe ich ein kleines Logging mit PHP realisiert (wie den Rest der Seite auch). Nur drückt keiner den Button "Ausloggen" das dann ein PHP-Script aufruft sondern macht einfach das Fenster zu. Das würde ich aber gerne in meiner Logdatei sehen.

Mein Problem ist nun, das ich bei dem üblichen Befehl "onunload" nicht weiter komme da die User in ihrem Bereich die Datei mit unterschiedlichen Parametern aufrufen. Damit würden sie dann jedesmal beim Wechseln einer Rubrik rausgeschmissen.

Es müsste also eine Funktion sein die den "schließen"-Button des Browsers abfragt... oder eine ganz andere Lösung...

Hat da jemand eine Idee...?

Viele Grüße, kaepten

Indyk
28.09.2006, 10:25:55
ich sehe das grundsätzliche problem, bie clientseitigen sprachen, das da einfach nichts mehr ist, was loggen könnte, wenn das fenster aus ist (- ;

selbst wenn du es schaffen könntest die schließen abzufragen, wer soll es dann loggen? Dein script würde ja mit der seite ebenfalls geschlossen werden
*meine meinung*

kaepten
28.09.2006, 10:32:36
Also im Moment ist es so, das , wenn man sich ausloggt, das Script ausloggen.php aufgerufen wird das die Session beendet und weiterleitet auf die Einstiegsseite meiner Homepage.

Man müsste also JS nur dazu bringen vor dem wirklichen "schliessen" des Fensters dieses Script aufzurufen. Das Funktioniert auch.

Nur führt das dazu, das bei jedem klicken in der Präsentation das ausloggen.php aufgerufen wird.

Ich hätte es aber gerne nur wenn man sich endgültig durch das Schließen des Fensters verabschiedet.

xlb
28.09.2006, 10:47:28
..., das ich bei dem üblichen Befehl "onunload" nicht weiter komme da die User in ihrem Bereich die Datei mit unterschiedlichen Parametern aufrufen. Damit würden sie dann jedesmal beim Wechseln einer Rubrik rausgeschmissen.

Klingt eher nach einem strukturellen/konzeptionellen Problem. Was haben die "Parameter" (GET-Queries?) mit dem onunload zu tun ?

kaepten
28.09.2006, 10:50:38
Die Links sind strukturiert in Rubriken/Unterrubriken. Das kommt aus einer Datenbank. Und immer wenn man die Rubrik wechselt wird die Seite mit neuen Parametern angefordert... bzw. schmeisst einen mit "onunload" raus...

Strukturelles Problem... kann schon sein... cool wäre sowieso ein partielles Nachladen a la AJAX... aber soweit bin ich noch nicht ;-)

feuervogel
28.09.2006, 10:59:28
das generelle problem wird sein, dass menschen, die ihrem browser jegliche client-seitigen sprachen verboten haben, dein system durcheinander bringen.

kaepten
28.09.2006, 11:09:51
Gut... zugegeben... das kann schon sein...

Aber dann funktionieren halt leider viele Sachen auf meiner Seite nicht...

Und manches lässt sich halt leider ohne JS nicht abbilden.

KTB
28.09.2006, 11:11:58
Ich habe das bei mir so gelöst:
Logge die Uhrzeit mit. Jedes mal wenn der User etwas macht, schreibe ich den aktuellen Timestamp in die Datenbank zu seiner ID. Diese kann man dann abfragen und wenn dieser Timestamp von mir aus 10 Minuten alt ist, hat der jenige sich nicht ausgeloggt, sondern die Seite nur geschlossen.

kaepten
28.09.2006, 11:13:58
Das würde aber eine Aktion des Users voraussetzen... Was ist wenn die Seite nur "auf" ist... er aber im Hintergrund woanders surft?

KTB
28.09.2006, 11:31:40
Das ist richtig. Man kann das auch in die Richtung abwandeln:
User meldet sich an, es wird ein "Angemeldet" in die DB geschrieben. Dann kann derjenige so lange die Seite auf haben wie ihm lustig ist. Sollte er sich abmelden wird das "Angemeldet" durch "Abgemeldet" oder sonst was ersetzt.
Wenn der User sich wieder einloggt, wird der Status der in der DB steht geprüft. Steht er auf "Angemeldet", hatte er sich nicht abgemeldet und du kannst das dann in deine Log schreiben.

kaepten
28.09.2006, 11:35:54
Okay... Klar wäre das möglich... aber wenn er sich wieder anmeldet ist es ja eigentlich schon zu spät... man müsste es gleich sehen...

Man kann ja mit dieser Wissenslücke leben... aber ich versuche immer den Rechner das machen zu lassen was notwendig/sinnvoll ist ;-)

Und hier erscheint es mir sinnvoll zu wissen, wer "echt" drauf ist...

KTB
28.09.2006, 11:54:30
Wofür ist es zu spät? Warum ist es für dich wichtig sofort zu sehen ob die Seite geschlossen wurde?
Man könnte beide Systeme natürlich auch kombinieren und von mir aus, die Seite alle 5 Minuten automatisch neu laden lassen. Dann hast du wieder einen neuen Timestamp und weißt so wer aktuell online ist.

kaepten
28.09.2006, 12:18:07
Ich gebe zu... das ist so ein spleen von mir...

Ich will zu jeder Zeit sagen können, wer wann auf der Seite ist... Sicherlich ist das etwas übertrieben... aber, wie oben schon geschrieben... ich versuche immer alles nach meinen Vorstellungen durch den Rechner erledigen zu lassen...

KTB
28.09.2006, 12:55:15
Dann habe ich dir jetzt eine prima Lösungsweg dafür gegeben. So weißt du wer wann online ist. Die 5 Minuten machen den Braten auch nicht...
Kannst die Zeit ja auch anpassen.
Wenn du es wirklich real-time haben möchtest, brauchst du eine Schnittstelle die dir das ermöglicht. Ich weiß nicht in wie weit da ActiveX, Java oder Flash zu fähig ist. Auf alle fälle steht dann fest, dass es sehr umständlich werden könnte und evtl. viel Traffic mit sich bringt.

Indyk
28.09.2006, 13:04:57
mhm, dazu würde sich doch ajax wunderbar eignen?
da würde das script jede minute automatisch eine php datei aufrufen welches den user als online deklariert
und sobald der user das fenster schließt wird das script nicht mehr ausgeführt und nach einer minute ist er halt offline
für ganz .... interessierte kannst du das script auch auf 1sek stellen oder von mir aus auf milisekunden umsteigen..

aber wie KTB schon gesagt ist, ist das.. echt nicht normal (- ;