Wie überprüft man den hochgeladenen Dateityp in PHP?
Ich habe diesen code zu überprüfen, für die Art von Bildern,
$f_type=$_FILES['fupload']['type'];
if ($f_type== "image/gif" OR $f_type== "image/png" OR $f_type== "image/jpeg" OR $f_type== "image/JPEG" OR $f_type== "image/PNG" OR $f_type== "image/GIF")
{
$error=False;
}
else
{
$error=True;
}
aber einige Benutzer beschweren sich, Sie bekommen eine Fehlermeldung beim hochladen jede Art von Bildern, während andere keine Fehler erhalten!
Ich Frage mich, ob dies das problem behebt:
if (mime_content_type($_FILES['fupload']['type']) == "image/gif"){...
Irgendwelche Kommentare?
InformationsquelleAutor der Frage John | 2011-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie niemals
$_FILES..['type']
. Die darin enthaltenen Informationen nicht überprüft, es ist ein benutzerdefinierter Wert. Testen Sie die geben Sie sich selbst. Für Bilder,exif_imagetype
ist in der Regel eine gute Wahl:Alternativ die
finfo
- Funktionen sind toll, wenn Ihr server Sie unterstützt.InformationsquelleAutor der Antwort deceze
Zusätzlich zu @deceze, können Sie auch finfo() zu prüfen, den MIME-Typ von nicht-Bild-Dateien:
InformationsquelleAutor der Antwort feeela
Sicher, dass Sie überprüfen könnten, wenn es ein Bild mit exif, aber eine bessere Weise, die ich denke, ist zu tun mit der finfo wie diese:
InformationsquelleAutor der Antwort Violence
Der beste Weg, meiner Meinung nach ist der erste, der getimagesize() gefolgt von imagecreatefromstring().
Überprüfung durch
getimagesize()
verhindert, dass einige DoS-Angriffe, weil wir nicht haben, um zu versuchen, umimagecreatefromstring()
von jeder Datei durch den Benutzer, entweder nicht-Bild-Datei oder die Datei zu groß ist. Leider, nach PHP-docs nicht verlässlich überprüfen Bild Typ Inhalt.Den
imagecreatefromstring()
schließlich versucht, die Datei zu öffnen, die als ein Bild - wenn es gelingt - haben wir ein Bild.InformationsquelleAutor der Antwort Picard
In PHP 5.5 verwende ich diese Funktion für das abrufen von Datei-Typ und überprüfen Sie, ob image:
Dann könnten Sie tun:
Vollständige Liste der mime-Typen: http://www.sitepoint.com/web-foundations/mime-types-complete-list/
InformationsquelleAutor der Antwort aesede
Dies ist eine einfache, eine Zeile script, dass ich verwenden Sie oft.
Grundsätzlich bin ich mit mime_content_type() auf, um so etwas wie "image/jpg" - und dann explodieren Sie durch "/" und die Prüfung gegen das erste element des Arrays, um zu sehen, wenn es heißt "Bild".
Ich hoffe, es funktioniert!
InformationsquelleAutor der Antwort Salvi Pascual
WARNUNG: die folgende Antwort nicht wirklich überprüfen Sie den Dateityp. Es prüft nur den Namen. Es ist nicht geeignet für tatsächliche Sicherheit.
EDIT: diese Methode nicht Verwendenwie es serviert kein security-check. Ich verlasse diese Antwort hier, so dass niemand macht den gleichen Fehler wie ich, indem Sie versuchen diese.
Ich habe Folgendes versucht und es funktionierte für mich:
Quelle link
InformationsquelleAutor der Antwort uutsav