Tom: Formular Script

Beitrag lesen

Hello,

Gleich zu Beginn. Das erste Formularfeld als Filename wird nicht reichen, da dieser nicht eindeutig ist. Am Besten machst du das in Kombination mit einem Zeitstempel

Ein Zeitstempel kann auch nicht eindeutig sein, sondern nur zufällig der einzige Request zu diesem Zeitpunkt. Der von PHP verwendete Unix-Timestamp http://www.php.net/manual/en/function.time.php ist wesentlich zu granular, der feinere http://www.php.net/manual/en/function.microtime.php könnte da schon eher zum Erfolg führen, ist aber angesichts schneller Systeme und mehrerer HTTP-Instanzen, die "gleichzeitig" laufen, immer noch zu grob.

Sowas geht also entweder mit einem übermittelten Wunschnamen, der der dann zusammen mit dem Filemode
"XB+" http://www.php.net/manual/en/function.fopen.php verwendet wird, also einen abfangbaren Fehler auslöst, wenn die datei schon vorhanden war, oder mit einem vom System ausgewürfelten Namen
http://www.php.net/manual/en/function.tmpfile.php.

Zu bedenken ist allerdings immer, dass man bei ungenügender Absicherung des Wunschnamens auf das gesamte für das Script zugängliche Filesystem zugreifen kann. Man sollte also auch Funktionen, wie basename() http://www.php.net/manual/en/function.basename.php, realpath() http://www.php.net/manual/en/function.realpath.php und pathinfo() http://www.php.net/manual/en/function.pathinfo.php auf intelligente Art mit einsetzen und die Wurzel für das Anlegen und Lesen von Dateien über das Formular auf jeden Fall statisch festlegen oder ausführlich gegenprüfen.

Liebe Grüße aus Syburg bei Dortmund

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de