Wie zu Lesen-header, der eine Datei hochgeladen in PHP?
Können wir Lesen den header-Informationen einer Datei in PHP zu bestimmen, die Art der Datei, die hochgeladen?.
Ich will nicht zu verlassen Sie sich auf $_FILES['control_name_from_client']['type'].
Da wir wissen, dass diese Eigenschaft bestimmt, der Typ der Datei durch das Lesen der extension der Datei hochgeladen.
Was ist, wenn der Benutzer benennt, sagen test.jpg -> test.xls. In diesem Fall $_FILES['control_name_from_client']['type']
zeigen die Art, wie application/vnd.ms-excel statt image/jpeg. Es ist aber natürlich dies kann zu Problemen führen, wenn ein code ausgeführt werden soll, liest die XLS-Datei zum abrufen von Daten für die Verarbeitung.
Irgendwelche Vorschläge, bitte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
finfo_file()
. Sie nennen es vorbei an der Dateipfad. Beispiel:Müssen Sie die
Fileinfo
Erweiterung. Als PHP-Handbuch sagt:mime_content_type()
stützt sein Ergebnis auf die Erweiterung. nicht sicher überfinfo_file()
Fileinfo
Erweiterung ist clever.soweit ich weiß, gibt es keine solche Funktion in PHP, aber wenn Sie Zugriff auf das CLI (und mit Linux), können Sie mit der "file" Befehl über system().
Es verwendet werden, um die mime_magic - Erweiterung in älteren Versionen von PHP, aber das ist jetzt veraltet zugunsten von finfo_file, was tut, verwenden Sie Datei-Signaturen testen Sie den Dateityp, rein gar nicht mit der Erweiterung.
Weiß nicht, was "header" du redest, aber aus der Sicht der Sicherheit das einzige, was Sie wirklich haben, um die Aufmerksamkeit auf ein Dateiname Erweiterung.
Nur weil Ihr web-server richten Sie Ihre Datei, indem Sie es.
Um zu testen, ob die hochgeladene Datei als gültige Daten für eine spezielle Anwendung, die Sie haben, um diese Anwendung zu nutzen-spezifische routine, es gibt kein universal-tool in PHP.
Sie können die Verwendung von imagemagick für Bilder, getid3 für die mp3-Dateien, fffmpeg für die Filme und so weiter.
Aber natürlich die ganze Datei eingesetzt werden müssen, die überprüfung nur die "header" nicht garantieren, dass die gesamte Datei gültig ist.
checking just "header" doesn't guarantee that entire file is valid
, aber es hat Leichtigkeit, die Dinge ein bisschen mehr, wenn auch nicht in vollen Zügen genießen.phpinfo()
. Stattdessen broken image angezeigt. Ich werde sicherlich gerne wissen, wenn ich etwas verpasst haben oder ob Sie immer noch reproduzieren Sie das Problem, irgendwie.