Hallo,
ich erstelle gerade ein kleines Uploadscript. Zum den Upload auf Bilder zu limitieren verwende ich:
function image_valid($type)
{
$file_types = array(
'image/pjpeg' => 'jpg',
'image/jpeg' => 'jpg',
'image/jpeg' => 'jpeg',
'image/gif' => 'gif',
'image/X-PNG' => 'png',
'image/PNG' => 'png',
'image/png' => 'png',
'image/x-png' => 'png',
'image/JPG' => 'jpg',
'image/GIF' => 'gif',
'image/bmp' => 'bmp',
'image/bmp' => 'BMP',
);
if(!array_key_exists($type, $file_types))
{
return "FALSE";
}
else
{
return "TRUE";
}
}
und
if(image_valid($_FILES['datei']['type']) === "FALSE")
{
die("Bildtyp ungültig");
}
Aber wie stelle ich es an, nur PDF-Dateien zu erlauben?
Vielen Dank im voraus für eure Hilfe :)
jahlives
31-10-2007, 10:04
Schau dir den entsprechenden MIME Type http://de.selfhtml.org/diverses/mimetypen.htm für PDF an.
Tipp: Wenn du mit true und false operierst, dann verwende gleich die Boolean Werte
true
false
und keine Strings
Gruss
tobi
Ich danke dir für die super schnelle Antwort :)
Im übrigen bietet dir diese Art der prüfung keine Sicherheit, ob es sich tatsächlich um den erwarteten Dateityp handelt.
jahlives
31-10-2007, 10:28
Im übrigen bietet dir diese Art der prüfung keine Sicherheit, ob es sich tatsächlich um den erwarteten Dateityp handelt.
Richtig. Aber zumindest bei Bildern könnte der TS mittels einer PHP-Bildfkt versuchen auf die Datei zuzugreifen. Wenn es einen Fehler gibt ist es irgendeine Datei, die sich als Bild auszugeben versucht.
Gruss
tobi
Bitmaps jedenfalls kann man damit auch nicht prüfen. Und ich hab auch schon ein paar mal krude Probleme mit PNGs gehabt. Wie dem auch sei ... PDFs damit schon mal gar nicht ;)
jahlives
31-10-2007, 10:57
PDFs damit schon mal gar nicht
Mit einer PDF Klasse müsste doch auch das machbar sein :dontknow:
aha, diese Funktion bringt also zur PDF-Prüfung nichts?
Muss ich dann dieses Uploadscript ohne jegliche Prüfung bereitstellen?
Die meisten Browser (um nicht zu sagen alle mir bekannten), liefern den MIME-Typ für PDF mit, wenn ich eine Datei auf .pdf enden lasse. Ebenso verhält es sich mit allen anderen Dateiendungen. Wirklich zuverlässig kannst du nur mit Dateispezifischen Funktionen die Integrität der übertragenen Datei prüfen. Wie jahlives anmerkte, zum Beispiel mit einer PDF-Klasse.
unset und jah... vielleicht solltet ihr klarstellen, dass eure einwände nicht auf die dateiendungen sondern auf den inhalt münzen :D
@maggus... deine prüfung bringt schon was... allerdings keine 100%ige sicherheit, ob es sich bei der datei hanswurst.jpg auch wirklich um ein bild handelt...
weiß ich doch ;) nur klang dieser beitrag nicht danach:
Original geschrieben von maggus
aha, diese Funktion bringt also zur PDF-Prüfung nichts?
Muss ich dann dieses Uploadscript ohne jegliche Prüfung bereitstellen?
ich dachte, ich muss da noch mal n schubs richtung richtiges verständnis geben :D
PHP-Desaster
31-10-2007, 13:17
Du kannst dir auch ganz einfach eine eigene Prüfroutine für PDFs basteln. Woran du ein PDF identifizieren kannst, kannst du hier (http://filext.com/file-extension/pdf) nachlesen!
Oki, jetzt ist alles klar :)
Vielen Dank für eure Comments :)
Einen schönen Abend... Ich gehe jetzt erst einmal 10 Tage in die Karibik ^^
du solltest first-level-support für vor ort mitnehmen... warte, ich pack schnell.... :D