Moin!
ich habe ein Problem im Bezug auf PHP und onUnload. Das Problem ist folgendes:
<body bgcolor="#ffffff" onUnload="<?php online_counter('PULL');?>">
Es soll beim verlassen der Seite die eigene IP Adresse aus einer mySQL Datenbank gelöscht werden.
[ ] Du weißt, wann PHP ausgeführt wird.
Aber daran kann man ja was ändern. Also:
PHP ist eine serverseitige Skriptsprache. Das bedeutet: Der Browser fordert eine Ressource (durch die URL eindeutig identifizierbar) vom Server an. Der Server untersucht die URL und stellt fest, daß ein PHP-Skript angefordert wurde. Er startet PHP und läßt ihn das Script laden.
PHP führt dann den PHP-Code aus. Als Resultat entsteht eine Webseite, in der nichts mehr von PHP zu sehen ist.
Der Webserver kriegt von PHP diese fertige Seite und schickt sie an den Browser. Der Browser interpretiert dann das enthaltene HTML und CSS, und führt eventuell eingebundenes Javascript aus. Dabei gilt das für Javascript übliche Prozedere: Erst werden alle direktn Befehle ausgeführt, nach vollständigem Laden dann noch der onload-Eventhandler, bei der Benutzung der Seite dann diverse Funktionen, und beim Verlassen der Seite dann onunload.
Wenn du dir mal den Quellcode ansiehst, der im Browser ankommt, dann siehst du, daß dein Vorhaben nicht klappen kann.
Aber die Frage ist, ob das überhaupt klappt.
Du kannst onunload eine Abmeldeseite laden, die die benötigten Funktionen ausführt. Aber es ist nicht garantiert, daß diese Seite jemals geladen wird, denn:
- Der Browser kann abstürzen
- Javascript kann ausgeschaltet sein
- onunload kann z.B. durch einen Werbefilter herausgefiltert werden.
Besser ist, wenn du einen Timeoutwert oder das Eintragsdatum in die Datenbank schreibst und "bei Gelegenheit" (also nach Verstreichen einer gewissen Zeit ohne neue Aktivität des Benutzers) überflüssige Einträge löschst.
- Sven Rautenberg