Felix Riesterer: PhP rename file

Beitrag lesen

Lieber CJay,

$allowedExts = array("jpg", "jpeg", "gif", "png");

$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 200000000)
&& in_array($extension, $allowedExts))
  {

  
das ist unangenehm zu lesen und damit noch unangenehmer zu pflegen! Warum nicht lieber so?  
  
~~~php
$allowed = array(  
    'image/gif'   => array('gif'),  
    'image/jpeg'  => array('jpg', 'jpeg'),  
    'image/pjpeg' => array('jpg', 'jpeg'),  
    'image/png'   => array('png')  
);  
  
// (array) $ext: determine file extension  
preg_match('~[^.]+$~', $_FILES['file']['name'], $ext);  
  
if ($_FILES['file']['size'] < 200000000  
    // MIME type OK?  
    && in_array($_FILES['file']['type'], array_keys($allowed))  
    // correct file extension for this MIME type?  
    && in_array($ext[0], $allowed[$_FILES['file']['type']])  
) {  
    ....  
}

An Deiner Stelle würde ich die Dateiendung selbst festlegen, egal welchen Bockmist der Uploader vielleicht selbst verursacht hat (z.B. ein jpg-Bild als GIF umbenannt o.ä.). Dazu muss man getimagesize() bemühen, da auf $_FILES[$key]['type'] kein Verlass ist!

Damit wird das Script etwas einfacher, da man nun nur prüfen muss, ob das Bild eine Höhe und Breite größer null hat:

$allowed = array(  
    'image/gif'   => 'gif',  
    'image/jpeg'  => 'jpg',  
    'image/pjpeg' => 'jpg',  
    'image/png'   => 'png'  
);  
  
$test = getimagesize($_FILES['file']['tmp_name']);  
  
if ($_FILES['file']['size'] < 200000000  
    // MIME type OK?  
    && in_array($test['mime'], array_keys($allowed))  
    // is it a valid image file?  
    && $test[0] > 0 && $test[1] > 0  
) {  
    $ext = $allowed[$test['mime']];  
    ....  
}

indas ich eine rename  funktion einbauen wollte es aber nicht geklappt hat D;

Das ist keine Problembeschreibung.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)