Datenbankeintrag löschen wenn User die Webseite verlässt?

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.

Woher ich das weiß:Berufserfahrung

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?


Destranix  30.07.2019, 15:28

Evtl. ginge es noch mit Onbeforeunload in Javascript...

0
andi3366 
Fragesteller
 30.07.2019, 15:32

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.

0
Destranix  30.07.2019, 15:36
@andi3366

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.

0
regex9  30.07.2019, 20:48
@Destranix

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.

1
Destranix  31.07.2019, 08:46
@regex9

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.

0
andi3366 
Fragesteller
 30.07.2019, 16:21

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?

0
Destranix  30.07.2019, 16:22
@andi3366

Da habe ich keine Ahnung. Das sollte in der Regel garnicht möglich sein, da der Browser das Gerät abkapseln soll.

Du kannst evtl. die unterschiedlichen sessions unterscheiden, aber da könnte man mehrere Sessions auf einem Gerät starten.

0
andi3366 
Fragesteller
 30.07.2019, 17:03
@Destranix

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

1
Destranix  30.07.2019, 17:05
@andi3366

Cookies wären quasi die Clientseitige Alternative zu Sessions.

Evtl. kannst du damit sogar noch länger als eine Session lang Geräte identifizieren.

0
andi3366 
Fragesteller
 30.07.2019, 17:06
@Destranix

Wieso eventuell? Solange der User nichts löscht...

1
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