Die Erkennung von Browser beenden in PHP
Ich habe mir ein paar Themen (hier & google) in Bezug auf die Erkennung von browser beenden in php und ich bin nicht wirklich klarer, wie Sie dies tun.
Ich habe versucht, die register_shutdown_function
in PHP aber ausgeführt, dass, auch wenn ich aktualisiert, der browser-Seite.
Kann jemand helfen?
Vielen Dank im Voraus
- Ich sehe, ich habe mit JS/jQuery, aber es schien zu sein, die cross-browser-Probleme. Was ich wollte, zu tun ist, aktualisieren Sie eine Datenbank-Feld, wenn der Benutzer beendet oder heruntergefahren die browser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
PHP ist eine serverseitige Sprache. Browser-Ereignisse behandelt werden, die von DOM-Ereignissen. Auf "onunload" oder "onbeforeunload" Ereignisse, sendet einen AJAX-call auf eine PHP-Datei.
Und in dieser anderen Frage es ist eine aromatisierte Erklärung, was ich sage.
Bitte erklären was Sie wollen zu tun ist, wenn der browser geschlossen wird, um zu sehen, ob es vielleicht eine andere Möglichkeit, dies zu tun.
Einen web-server sendet seine Antwort an den browser, und dann (in der Regel) die Verbindung schließt. Sie würde etwas tun muss, um in Javascript, aber das wird nicht fangen alle Bedingungen. Sie können sicher nicht erkennen, es serverside.
Es kann erkannt werden, mit Hilfe der Javascript -
onbeforeunload
oderonunload
Funktionen, aber das ist absolut nicht korrekt, da es sich nicht erkennen:Siehe auch diese Antwort.
So zum Beispiel, wenn Sie wollen, Benutzer Abmelden, wenn Sie den browser schließen, sollten Sie besser eine "keepalive" - Mechanismus anstelle von "say goodbye" ein. Sie können dann melden Sie diejenigen Benutzer aus, die auf dem server (z.B. mit
cron
), deren Sitzungen wurden nicht aktiv ist (d.h., die noch nicht gesendet eine "keepalive") für mehr als X Minuten.Einer Lösung, die mindestens Dummkopf beständig ist das senden einer heartbeat an den server mithilfe von Javascript und Ajax, dann unter der Annahme, dass das browser-Fenster geschlossen wurde, wenn das signal aufhört zu pulsieren.
Anderen wäre die Nutzung von web-sockets zur Aufrechterhaltung einer Konstanten Verbindung, bis das Browserfenster geschlossen wird.
In jedem Fall würde es einiges an Arbeit von Ihrem Teil, um es einzurichten
Nicht nur mit PHP.
PHP läuft server-seitig und ist weit fertig Bearbeitung Ihrer Seite durch die Zeit, die user werden die Möglichkeit haben, schließen Sie Ihren browser. Könnte man technisch erkennen, ob PHP war noch die Verarbeitung der Seite und dem Benutzer geschlossen wird, mit einer bestimmten Konfiguration. Es ist jedoch nicht ideal. Sehen
connection_aborted()
.Was Sie tun müssen, ist legen Sie eine long-polling-Verbindung mit JavaScript, und überwachen Sie die server-Seite. Sie erhalten dann eine Idee, wenn das Fenster geschlossen ist. , Die Verbindung konnte hergestellt werden, um Ihre PHP-Skript, so dass PHP zu überprüfen
connection_aborted()
. Beachten Sie, dass Sie benötigen, umignore_user_abort()
für diese zu arbeiten, oder PHP konfigurieren.ini entsprechend.