Hello,
Besser wäre es dann noch, wenn auf dem Server zusätzlich noch getestet wird, ob es sich um ein Bild handelt. Das kann man mit getimagesize() ganz bequem machen und es hat bei mir bisher auch immer sicher funktioniert.
Der Martin hat in diesen Artikel aber geschrieben dass dieser Test fälschlicherweise doch funktionieren kann.
Das kann ich nachvollziehen.
Der HTTP-Header, also auch der mitgelieferte MIME-Type, werden nicht in der Datei gespeichert, die nachher auf der Festplatte landet, also auch nicht in der Temporärdatei, die PHP unter
$_FILES[$upload_field_name]['tmp_name']
bereitstellt.
http://www.php.net/manual/en/reserved.variables.files.php
http://www.php.net/manual/en/features.file-upload.post-method.php
Getimagesize() benötigt eine Datei zum Testen
http://de.php.net/manual/en/function.getimagesize.php
und arbeitet mit sogenannten Magic Numbers, also mit Bytesequenzen, die in den unterschiedlichen Dateitypen an bestimmten Stellen stehen müssen. Es ist sehr unwahrscheinlich, dass da eine PHP-Datei durchrutschen könnte.
Dafür müsste uns Martin erst einmal ein Beispiel liefern.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg