PHP Script starten wenn ein User Browser schliesst
Also in Javascript kann man mit <body onbeforeunload="ende();"> ein Script starten wenn der User den Browser schliesst, wird die Funktion ende() ausgeführt.
Meine Frage wäre, gibts so eine Funktion auch bei PHP die das gleiche machen kann.
Danke im voraus für eure Hilfe.
Meine Frage wäre, gibts so eine Funktion auch bei PHP die das gleiche machen kann.
Danke im voraus für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 89295
Url: https://administrator.de/forum/php-script-starten-wenn-ein-user-browser-schliesst-89295.html
Ausgedruckt am: 27.12.2024 um 05:12 Uhr
7 Kommentare
Neuester Kommentar
Noe.
JavaScript wird vom Browser interpretiert, PHP vom Server.
Heißt also, DU mußt JavaScript in Dein PHP-Script einbauen.
Lonesome Walker
JavaScript wird vom Browser interpretiert, PHP vom Server.
Heißt also, DU mußt JavaScript in Dein PHP-Script einbauen.
Lonesome Walker
Hehe...
wen Javascript Client- und PHP Serverseitig ist,
wie will man die dann zusammen kriegen
(könnte für Anfänger etwas verwirrend sein, nech)
Aber mit einem AJAX-Request könnte man das evtl. machen.
Hm... "onbeforeunload" das ist ein Microsoft eigener Eventhandler oder ? Was mit den anderen Browsern ?
Ich kenne sonst noch das Event "onunload" , aber das greift schon beim verlassen der Seite, also auch beim Seitenwechsel und nicht nur beim schließen des Browsers.
Sehe gerade, "ondeforeunload" hat laut MSDN ein sehr ähnliches verhalten: http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx
Also wirst du wohl selbst mit diesem Eventhandler nicht glücklich werden.
Wozu brauchst du das denn, vielleicht gibt es ja eine andere Möglichkeit zu erreichen was du gern hättest !?
Gruß Arano
wen Javascript Client- und PHP Serverseitig ist,
wie will man die dann zusammen kriegen
(könnte für Anfänger etwas verwirrend sein, nech)
Aber mit einem AJAX-Request könnte man das evtl. machen.
Hm... "onbeforeunload" das ist ein Microsoft eigener Eventhandler oder ? Was mit den anderen Browsern ?
Ich kenne sonst noch das Event "onunload" , aber das greift schon beim verlassen der Seite, also auch beim Seitenwechsel und nicht nur beim schließen des Browsers.
Sehe gerade, "ondeforeunload" hat laut MSDN ein sehr ähnliches verhalten: http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx
Also wirst du wohl selbst mit diesem Eventhandler nicht glücklich werden.
Wozu brauchst du das denn, vielleicht gibt es ja eine andere Möglichkeit zu erreichen was du gern hättest !?
Gruß Arano
Meine Größte Frage ist echt warum kann ich nur meinen Cookie lesen und von dem anderem User nicht.
das ist ganz einfach, könntest du nämlich die Cookies von anderen lesen, könnt ich auch deine Lesen und würde so, möglicherweise an deine Tauschbörsenbenutzerdaten, Administrator Login-Daten, Homebanking, ect. kommen.Sicher nicht gut !
Zusätzlich ist es glaube ich so, das der Browser den Cookie bei einem Seitenaufruf mit an den Server sendet. Was bedeutet, nicht der Server holt sich die Daten, sondern Du schickst sie ihm.
Schließlich bearbeitet der Server nur deine anfragen, also wen du nach Seite index.html fragst, schickt er Sie dir und das wars.
Mir fällt nur ein, das du beim einloggen bzw. wiedereinloggen beim Seitenwechsel einen Timstamp als "letzte_aktion" des Benutzers in seinem Profil in der Datenbank speicherst.
Wenn du nun wissen möchtest, ob ein Benutzer online ist, musst du nur prüfen, ob der Timestamp aus der Datenbank größer als ein ("aktueller Timestamp" - "5Min") ist.
Klar gibt das dabei Löcher in denen da nicht ganz stimmt, aber da musst du dann testen. Wenn ein Benutzerstatus z.B. ständig zwischen on- und offline wechselt, ist der Zeitwert der ein Benutzer als online gilt zu gering und muss (oder sollte/kann) erhöht werden.
Vielleicht hifts ja oder bring dich sonst wie weiter
Schönes WE
~Arano
Ja, ich denke schon !
Irgendwie muss sich der Server ja merken welcher User Eingeloggt ist und da er selbst keine "Fragen" stellen kann bleibt ihm nichts weiter übrig.
Vielleicht ist es auch ganz sinnvoll das in einer extra Tabelle zu machen "User_id | last_action". Das kann man dann auch weiter verwenden z.B. für eine Anzeige über wie viele registrierte Benutzer online sind, dann muss man nicht die Tabelle mit den Userdaten (z.B. 10000 Datensätze) benutzen, sondern die Zweite die nur ein Teil der Benutzer enthält (z.B. 2000 Datensätze) was natürlich schneller geht.
Die müsste man dann nur mit einem Cronjob vielleicht ein oder zweimal pro Tag leeren (alles raus schmeißen wo "last_action" älter als 10 Minuten ist. Oder man macht es nur einmal (um 24 Uhr) und kann dann zusätzlich ausgeben, das Heute bereits X (=Tabelleninhalt) Mitglieder online waren.
Hm... hört sich eigentlich auch ganz praktisch an ^^
Wie gesagt, etwas anderes fällt mir nicht ein, aber ich bin jetzt auch kein Profi, eher ein anfänglicher Fortgeschrittener
Schönen Tag noch
~Tobias
Irgendwie muss sich der Server ja merken welcher User Eingeloggt ist und da er selbst keine "Fragen" stellen kann bleibt ihm nichts weiter übrig.
Vielleicht ist es auch ganz sinnvoll das in einer extra Tabelle zu machen "User_id | last_action". Das kann man dann auch weiter verwenden z.B. für eine Anzeige über wie viele registrierte Benutzer online sind, dann muss man nicht die Tabelle mit den Userdaten (z.B. 10000 Datensätze) benutzen, sondern die Zweite die nur ein Teil der Benutzer enthält (z.B. 2000 Datensätze) was natürlich schneller geht.
Die müsste man dann nur mit einem Cronjob vielleicht ein oder zweimal pro Tag leeren (alles raus schmeißen wo "last_action" älter als 10 Minuten ist. Oder man macht es nur einmal (um 24 Uhr) und kann dann zusätzlich ausgeben, das Heute bereits X (=Tabelleninhalt) Mitglieder online waren.
Hm... hört sich eigentlich auch ganz praktisch an ^^
Wie gesagt, etwas anderes fällt mir nicht ein, aber ich bin jetzt auch kein Profi, eher ein anfänglicher Fortgeschrittener
Schönen Tag noch
~Tobias