Datei löschen wenn Browser geschlossen?

... komplette Frage anzeigen

3 Antworten

Lösung 1. Ajax

Da müsste es ein Eventgeben unload. Das wird getriggert, wenn der User die Seite verlässt. Wenn dies geschieht löst du mit Ajax einen erneuten Request aus. Auf die Antwort brauchst du nicht warten. Der Request geht dann auf eliminiere_datei.php oder sonst wo hin. Dort wiederum löscht du die Datei des Users.

Problem könnte sein, dass unload immer getriggert wird, auch wenn der User auf eine andere Interne Seite geht. Somit würdest du bei jedem Seitenaufruf die Datei aufbauen und "sofort" wieder zerstören.

Lösung 2. später Aufräumen

Du baust ein kleines Script, dass in regelmäßigen Intervalen schaut ob es Dateien gibt die älter als "x" (1 Tag, 3 Tage, 1 Woche, 1 Monat) sind. Dann werden die Dateien gelöscht. Vorteil wäre, dass du die Dateien (Was auch immer das sein mag) für statistische Zwecke noch nutzen könntest und dass du Performance sparst, wenn der User morgen wieder kommt, da du die Datei nicht von grundauf erzeugen musst.

Generell

Denke Ich aber, dass du ein Konzeptfehler hast. In meiner "Karriere" als Programmierer hatte ich auch öfters den Fall Usergebundene-Dateien zu erzeugen. Doch jedesmal gab es eine bessere und effizientere Lösung, wenn ich über die Datenbank ging bzw. das Konzept so umgestellt habe, dass es diese Dateien nicht braucht. Wenn du mehr von deinem System preisgibst kann man dir eventuell bei deinem Konzept helfen.

Antwort bewerten Vielen Dank für Deine Bewertung

stell eine websocket verbindung zwischen client(browser)  und server her, sobald die connection abbricht (zb beim schliessen des browsers, netzwerkabbruch,... )  wird je nach eingesetzter library serverseitig  ein close, disconnect, abort.. event getriggert das du abfangen kannst und gemütlich das file löschen kannst (musst natürlich die socket id festhalten damit du später weisst welche verbindung von welchem client abgebrochen ist damit du es der datei zuordnen kannst) . Google mal nach websocket libs für deine Programmierspache, implementierung ist meist relativ trivial

Antwort bewerten Vielen Dank für Deine Bewertung

Mit Ajax wirst du nicht weit kommen, wenn du Sachen vom Server löschen musst, da JS clientseitig ist und nicht serverseitig. (außer du nimmst dann natürlich node.js).

Das ganze machst du am besten mit PHP, du erstellst ein Session Cookie (dieser verfällt dann automatisch wenn du die Seite wieder verlässt). Die Datei auf dem Server löscht du auf diese Weise:

if (is_file($file_to_delete)){
echo (unlink($file_to_delete) ? "File Deleted" : "Problem deleting file";
}
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RakonDark
20.02.2016, 11:21

vielleicht lieber file_exists anstatt is_file

0
Kommentar von webflexer
20.02.2016, 12:52

@perhp Und wie soll PHP feststellen das der User die Seite verlassen hat?

Mit PHP kommst du da nicht weiter. Das kannst du nur per JavaScript abfragen und dann ein Ajax Aufruf an eine PHP-Datei anstoßen die dann die Datei löscht.

Und jetzt noch ein Kommentar an den Fragesteller. Du hast bereits mehrfach diese Frage hier gestellt und mehrfach gute Antworten bekommen. Das Internet ist voll von Tutorials mit AJAX und jQuery. Wenn du nicht in der Lage bist dieses umzusetzen, solltest du dein Vorhaben begraben.

0

Was möchtest Du wissen?