Ваш код использует переменные, которые не установлены, например, $uploaded_size
, которые будут равны NULL, если вы не сделаете что-то вроде ...
$uploaded_size = $_FILES['uploaded']['size'];
Кроме того, проверка MIME не слишком хороша, чтобы сказать вам, есть ли у файла PHP или нет. Это просто означает, что у него есть расширение php
(то есть, если вы проверяете type
в $_FILES
).
В целях безопасности переместите загрузки за пределы документа, переименуйте и удалите любое расширение (чтобы Apache не пытался запустить какой-либо вредоносный файл). Исходное имя файла и тип могут быть безопасно сохранены в базе данных со ссылкой на (возможно, хэшированное) новое имя.
Возможно, вы также захотите убедиться, что вы выполняете потоковую передачу содержимого позже, чтобы всегда отображать содержимое, используя readfile()
, а не что-то вроде include
(которое будет запускать ваш PHP-код, даже если оно встроено в изображение с image/gif
MIME, который можно сказать, что это GIF, если он включает заголовок GIF).