Verzeichnis automatisch löschen / Timer

Ich arbeite mich zur Zeit in PHP 5 ein und als erstes eigenes Projekt wollte ich eine Datei einlesen [z.B. datei.csv], gewisse Änderungen vornehmen und sie dann speichern [datei_neu.csv]. Der User kann seine Datei über ein Formular hochladen [ method="post" ] und die wird dann in ein Verzeichnis kopiert. Damit man die Datei nicht so einfach findet generiere ich einen eindeutigen Verzeichnisnamen [ md5(uniqid (rand())) ]. Das und das anschliessende Verarbeiten der Datei funktioniert reibungslos. Nun meine Frage(n):

aus Sicherheitsgründen will ich, dass das Verzeichnis mitsamt den Dateien automatisch gelöscht wird
- nachdem die Session beendet wurde (Browser schliessen / PHP Timeout)
(oder einfach nach einer gewissen Zeit (z.B. 30 s))

dabei wäre zu berücksichtigen, dass es auch noch klappt falls der User versehentlich 'refresh' drückt oder wenn mehrere User gleichzeitig unterwegs sind

Ich habe nach einer Timer-Funktion gesucht (ähnlich wie es sie in VB6 gibt), leider ohne Erfolg. Jetzt suche ich nach der besten Lösung für das Problem.

Ich hoffe ich habe mich einigermaßen klar ausgedrückt und jemand kann mir weiterhelfen!

MfG C.
 
Wenn du das nur aus Sicherheitsgründenso machen willst bringt das so gar nichts. Man kann die Dateien innerhalb dieser 30 s locker öffnen. Deswegen würde ich das so machen:

1.du schützt das ganze mit .htaccess und vergibst so damit ein Passwort für die per Browser auf diesen Ordner zu greifen wollen.

2.Der PHP Zugriff auf die Datei funktioniert ganz normal.

Wenn du die Dateien aber trotzdem löschen willst, gibts da 2 Möglichkeiten die ich kenne:

1.Du baust einen JS Skript das auf das OnClose(oder so) Event von body reagiert und dann beim schließen ein Post zu dem Skipt abschließt um es zu löschen.

2.Du vergleichst bei jedem Aufruf der Seite die Uhrzeit des erstellens der Datei mit der aktuellen Uhrzeit und wenn es eine Zeitdifferenz von mind 30. Sekunden gibt löscht das Skript die einfach.


Aber so würde ich das nicht machen das ist sehr unsicher nimm lieber htaccess ist auch ein bissle einfach würde ich sagen.

gruß CPU8080
 
Vielen Dank für die schnelle Antwort!

Habe mir gedacht es nun so zu machen: anstatt bei jedem Aufruf ein neues Verzeichnis zu generieren lege ich ein einzelnes fest das ich mit .htaccess schütze. Jedes mal wenn das Script aufgerufen wird, wird die Datei überschrieben und das Passwort geändert (damit jeder Benutzer (zu 99%) sicher sein kann, dass nur er seine Daten einsehen kann.

Ist es überhaupt möglich mit PHP in die .htaccess zu schreiben?

Wenn nicht: wäre es möglich mit der temporären Serverdatei $_POST['datei']['tmp_name'] zu arbeiten, da diese sich am Ende der Session sowieso "in Luft auflöst"?

Danke für deine Hilfe

MfG Cyber
 
ja du kannst die .htaccess mit fopen öffnen hab ich selber schon des häufigeren gemacht ist sehr praktisch.
Jo stimmt du könntest mit einer Temp Datei arbeiten ist keine schlechte Idee was du auch machen könntest ist wenn du z.b. den HTTP Server local installiert hast dann kannst du die DAteien auch außerhalb des Verzeichnisses speichern das ginge auch.

gruß

EDIT: hab mir deinen ersten Post oben nochma durch gelesen, Tmp wäre nichts für dich weil die Datei würde zufrüh gelöscht werden nämlich sobald du fclose aufrufst
 
Ok danke, das hilft mir weiter!

Da die Site nicht lokal gehostet ist und ich nur Webmaster und nicht Server-Admin bin, werde ich versuchen das ganze mit ner .htaccess zu machen!

Ich hab nämlich schon versucht direkt mit der temp des Uploads zu arbeiten, doch dies schlug leider fehl (denke die wird zu schnell gelöscht) und nach kurzem Lesen bei PHP.net komme ich zum Schluss, dass so ne temp Geschichte die Sache nicht unbedingt vereinfacht (da sie nach fopen() oder am Ende des Scripts gelöscht wird)

Keine Angst, wenn ich noch Fragen hab meld ich mich ;)

\\ EDIT:

Ich habe heute versucht die .htaccess Geschichte hinzubekommen aber es klappt noch nicht! Ich habe alles über .htaccess bei selfhtml gelesen. Ich kann per PHP die .htusers-Datei bearbeiten und alles funktioniert wie es soll, AUSSER dass ich kein Ergebnis erhalte wenn ich beim Dialog Benutzername und Kennwort eingebe. FireFox öffnet den Dialog immer wieder, mit IExplorer bekomm ich nach dem 3. Versuch einen 401 Fehler. In die .htusers schreibe ich das Passwort mit md5 oder crypt verschlüsselt. Im Dialog gebe ich es so ein wie es in der .htusers steht oder im volltext. Aber nichts davon funktioniert. Woran könnte es liegen??

\\ EDIT:

Ich habe mir nochmal alle Dateien zu Gemüt gezogen und mir auch die Logfiles angesehen. Das Problem war dass der Server die .htusers nicht finden konnte. In den Logfiles habe ich dann auch den kompletten Pfad gefunden, phpinfo() gab ihn nur unvollständig an! Nun funktioniert alles.
 
Zurück
Oben