Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Upload: Dateityp prüfen PDF [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Upload: Dateityp prüfen PDF


 
maggus
31-10-2007, 09:58 
 
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

 
maggus
31-10-2007, 10:08 
 
Ich danke dir für die super schnelle Antwort :)

 
unset
31-10-2007, 10:22 
 
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

 
unset
31-10-2007, 10:39 
 
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:

 
maggus
31-10-2007, 10:58 
 
aha, diese Funktion bringt also zur PDF-Prüfung nichts?

Muss ich dann dieses Uploadscript ohne jegliche Prüfung bereitstellen?

 
unset
31-10-2007, 11:01 
 
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.

 
arkos
31-10-2007, 11:08 
 
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...

 
unset
31-10-2007, 11:11 
 
Hab ich doch .. :(

 
arkos
31-10-2007, 11:12 
 
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!

 
maggus
31-10-2007, 19:20 
 
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 ^^

 
arkos
31-10-2007, 19:50 
 
du solltest first-level-support für vor ort mitnehmen... warte, ich pack schnell.... :D

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:07 Uhr.