Datenbankeintrag löschen wenn User die Webseite verlässt?
Ich möchte Informationen in die Datenbank eintragen, wenn der User auf die Webseite kommt und dann wieder löschen wenn er diese verlässt. Sollte ich jede Sekunde abfragen ob der User noch auf der Webseite ist oder wie mache ich das am besten?
3 Antworten
Dafür gibt es je nachdem was du vorhast Tools, vergesst bitte nicht das wir in Deutschland sind, hierbei solltest du unbedingt die aktuelle Datenschutzbestimmungen sauber durchlesen.
Du kannst Sessions verwenden. Oder Cookies.
Das exakte verlassen der Seite ließe sich aber wohl wirklich nur tracken, indem du eine Verbindung aufrechterhälst und dort Nachrichten sendest.
Wofür brauchst du das eigentlich?
Vielleicht mit Cookies oder? Dann könnte ich das eingetragene Gerät in der Datenbank nicht mehr löschen aber das wäre mit einer Boolean-Spalte "online" zu umgehen
Wieso eventuell? Solange der User nichts löscht...
Meine Webseite sollte so funktionieren: Ein Gerät kommt auf die Webseite, autoID und ip Adresse werden abgespeichert. Ein anderes Gerät kommt auf die Webseite und dieselben Daten werden in die Datenbank eingetragen. Wenn in der Datenbank ein Gerät mit derselben IP vorkommt wird dieses auf der Webseite des anderen Geräts angezeigt. Man soll sehen können welche Geräte im eigenen Netzwerk gerade auf dieser Webseite sind.
Ok, also je nachdem, wie sicher das ganze sein soll, wüdre es mit onbeforeunload funktionieren.
Beim betreten der Seite wird in der Datenbank ein enuer Eintrag angelegt. Beim verlassen, wird die inbeforeunload-Methode aufgerufen. Diese sendet eine asynchrone Anfrage mit der IP-Adresse und der autoID an eine deiner Seiten, die dann den Eintrag aus der Datenbank entfernt.
Das Problem hierbei wäre, dass der Nutzer die Seite auch in mehreren Tabs geöffnet haben könnte. Man müsste die Überprüfung also schon noch etwas erweitern.
Das wäre dann durch die in Kommentaren weiter unten vom fragesteller angesprochenen Cookies zu regeln. Sofern der User es nicht verhindert, kann der Seitenbetreiber dann zuerst abfragen, ob schon ein entsprechendes Cookie vorhanden ist und nur dann ein neues erzeugen, wenn das nicht der Fall ist.
Ich möchte Informationen in die Datenbank eintragen, wenn der User auf die Webseite kommt
das ist kein Problem. Du schreibst einfach Deine SQL Anweisung an den Anfang der Datei index.php, dann wird bei jedem Aufruf der Seite ein Datenbankeintrag erstellt.
und dann wieder löschen wenn er diese verlässt.
Da HTTP ein zustandsloses Protokoll ist, kannst Du nicht feststellen, wenn ein User die Seite "verlässt". Wie willst Du denn "verlässt die Seite" definieren?
Alex
Ein Problem habe ich noch: Wie halte ich diese Geräte auseinander wenn alle dieselbe IP haben? Ich weiß, dass man die lokale IP herausfinden kann aber geht das nicht leichter?