Frage von BPTVEu, 52

Datei löschen wenn Browser geschlossen?

So, das ist nun der dritte Versuch eine Antwort zu bekommen die mir hilft. Was ich vorhabe: Jeder User der sich auf meiner Seite befindet hat eine eigene automatisch angelegte Datei. Und wenn er die Seite verlässt soll diese wieder gelöscht werden.

Das ist logisch, jedoch nicht relativ einfach. Alle antworten die ich bekommen habe haben mir gesagt, ich soll nach AJAX googlen. Ich hab mir die Finger wund gegoogelt und jetzt hatte ich gehofft irgendjemand von der genialen GUTEFRAGE.net Community könnte es mir erklären und/oder mir evtl. Codeschnipsel liefern. Danke schonmal im Voraus BratPfanneTV

Antwort
von tWeuster, 19

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
von mrhashpipeotto, 19

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
von perhp, 32

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";
}
Kommentar von RakonDark ,

vielleicht lieber file_exists anstatt is_file

Kommentar von perhp ,

Wollte den Ersteller des Artikels nur ein kleinen Anstoß geben für sein Problem, natürlich kann man das ganze nicht 1 zu 1 verwenden, ohne an die eventuellen entstehenden Probleme zu denken.

Kommentar von webflexer ,

@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.

Kommentar von perhp ,

Sorry hast natürlich recht, mit PHP kann ich den Event nicht triggern. Am besten ist dann einfach mit JS den Event triggern und anschließend das PHP Script aufrufen, wo die Datei gelöscht wird.

Kommentar von mrhashpipeotto ,

es gibt auf der welt zum glück nicht nur php, php ist zwar ne robuste aber relativ eingeschränkte Technologie 

Kommentar von fluffiknuffi ,

Das stimmt. PHP sollte endlich auch browserseitig laufen!

:'D

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten