Hello Ben,
Wenn Du einen Fileupload über HTTP vornimmst und ihn von PHP bearbeiten lässt, dann legt das PHP-System ein "php-temporäres" File auf dem Fileserver im in der INI (oder an anderer Stelle) festgelegten Stelle an.
Wenn das Cript endet, wird sie automatisch gelöscht. Das funktioniert so sehr gut, dass ich bei einem "CMS", das ca. vier Jahre durchgehend lief, keine einzige vagabundierende Datei bekommen habe.
Nach dem Upload einer Datei solltest Du als erstes
$_FILES[$user_upload_field_name]['error']
überprüfen.
Wenn ['error'] === 0 ist, wurde genau ein File ordnungsgemäß hochgeladen
Wenn ['error'] ein Array ist, wurden mehrere Files hochgeladen. Dann musst Du die Prüfungen mit allen
$_FILES[$user_upload_field_name]['error'][$n]
vornehmen.
Weiterhin solltest Du den MIME-Type der Datei prüfen lassen, und zwar bitte von einer geeigneten Funktion auf dem Server, und _NICHT_ einfach durch Nachsehen in
$_FILES[$user_upload_field_name]['type']
oder
$_FILES[$user_upload_field_name]['type'][$n]
Dort steht nur der vom Client mitgelieferte MIME-Type-Bezeichner drin, und der kann nach belieben gefälscht sein. Geeignet ist die Funktion
http://www.php.net/manual/de/function.mime-content-type.php
oder die in der Beschreibung bezeichnete Nachfolgelösung.
BTW: Mir ist immer noch schleihaft, warum die PHP-Entwickler eine derartig wichtige Funktion noch nicht "repariert" haben und fest in den Sprachbestand aufgenommen haben.
Hier handelt es sich um die häufigste Sicherheitslücke, die es in PHP-Systemen gibt, wenn der MIMIE-Type von uploaded Files nicht überprüft wird.
Alternativ kannst Du auch
http://www.php.net/manual/de/function.getimagesize.php
und seine Brüder benutzen, wenn es um die Überprüfung von Bilduploads geht.
Weitere Hinweise unter
http://www.php.net/manual/de/features.file-upload.php
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
