Also mal ehrlich, ein Prüfskript, das sich durch so einen simplen "Trick" überrumpeln läßt, verdient den Namen nicht. :-)
Eigentlich enthält $_FILES schon ein Array mit Mime-Type.
hochgeladen: test.dokument.was.pdf
Array
(
[name] => test.dokument.was.pdf
[type] => application/pdf
[tmp_name] => C:\xampp\tmp\php1622.tmp
[error] => 0
[size] => 165712
)
hochgeladen: test.dokument.pdf.php
Array
(
[name] => test.dokument.pdf.php
[type] => application/octet-stream
[tmp_name] => C:\xampp\tmp\php2ED1.tmp
[error] => 0
[size] => 165712
)
In einem zweiten Schritt könnte bei Bildern getimagesize folgen, für eine nochmalige Überprüfung von Mime-Type. Wie sich Videos und anderes Mime-Type überprüfen lassen, dafür hatte ich zwischendurch mal eine Lösung gefunden, doch leider wieder vergessen.
Nur wie wird mit application/octet-stream umgegangen? Eben damit stelle ich Zip-Archive zum Download bereit. Probleme sind mir bisher nicht bekannt, obwohl es sich bei octet-stream theoretisch auch um ausführbare Dateien handeln könnte.
Bei WP habe ich es bisher nicht mit einem Punkt getestet, was auch mit daran lag, dass ich bei einem eigenen Upload-Script nicht auf die Idee kam, einen Punkt durchzulassen. Wobei das neben der Überprüfung von $_FILES und mit getimagesize als zusätzliche Sicherheit diente:
$pruefe = preg_replace("/[a-z0-9_-]+?\.(jpg|png)/i", "", $imagen);
Es wird ja nicht der eigentliche Name verwendet, denn eine Upload-File wird immer zuerst unter irgendwas123.tmp auf dem Server gespeichert, bevor es dann von PHP einen Namen erhält und in ein Zielverzeichnis verschoben wird. Für mich war es bisher normal, von PHP dabei den ursprünglichen Namen aufgeräumt zu verwenden.
Hatte einmal mit einer ganz kleinen Galerie begonnen, war nur ein erster Entwurf und wurde bisher nicht fertig gestellt, nur das Upload-Script wurde halbwegs fertig:
http://www.coder-welten.de/php/csv/bg-erw…load-script.htm