Сравнения типа $ext == "jpg"
только проверяют, что $ext
точно "jpg".
Возможно, вы захотите использовать strtolower на $ ext перед выполнением этих сравнений, чтобы справиться с ситуацией ".JPG".
Если вы используете PHP <= 5.2, вы можете использовать <a href="http://fr.php.net/manual/en/function.mime-content-type.php" rel="noreferrer"> mime_content_type для проверки типа содержимого файлов вместо того, чтобы полагаться на $_FILES['imagefile']['name']
и / или $_FILES["imagefile"]["type"]
, которые оба отправляются клиент - и, как таковой, может быть подделан.
Если вы используете PHP> = 5.3, вы можете рассмотреть новое расширение fileinfo , и оно finfo_file
function
Для размера файла вы уже используете $_FILES["imagefile"]["size"]
; это нормально, я думаю, но вы узнаете об этом только после загрузки файла - тем не менее, я боюсь, что нет реального способа проверить подобные вещи перед загрузкой ...
возможно, вам удастся найти некоторый код JS, чтобы выполнить первую предварительную проверку расширения перед загрузкой файла, но вам все равно придется проверить на стороне сервера, поскольку все, что делается на стороне клиента, по своей сути небезопасно.
Не уверен, что вы могли бы сделать то же самое с размером файла, хотя ...
Некоторые браузеры могут поддерживать скрытое поле с именем MAX_FILE_SIZE
(см. Документацию о загрузка файла ); но не уверен, что он действительно поддерживается (никогда не видел, чтобы он использовался, на самом деле; так, вероятно, нет :-()
В качестве sidenote вы, вероятно, захотите настроить upload_max_filesize , чтобы он позволял загружать файлы по крайней мере настолько большого размера, насколько вы хотите (по умолчанию он обычно равен 2 МБ; поэтому он уже должен быть в порядке)