Здесь мы идем снова ....
a) Не проверять загрузку файла, чтобы видеть, присутствует ли его предоставленное пользователем имя файла.Вполне возможно загрузить файл без имени.Правильный метод проверки успешности загрузки:
if ($_FILES['name_of_file_field']['error'] === UPLOAD_ERR_OK) {
... worked ok ...
} else {
die("Upload failed with errno #" > $_FILES['name_of_file_field']['error']);
}`
b) Не проверяйте загруженный тип файла, проверяя его расширения.Ничто не говорит о том, что злонамеренный пользователь не может загрузить «cute puppy.jpg», но действительно отправляет «nasty virus.exe».Всегда определяйте тип файла на сервере альтернативными методами, такими как file_info
.
c) Вы, кажется, регистрируете загрузку в базе данных, независимо от того, является ли она действительной или нет.«Эй, вы отправляете нам грузовик с мусором вместо цветов. Ну да ладно, я все равно приму доставку. Спасибо!».Кроме того, вы не проверяете, удастся ли move_uploaded_file()
вообще, так что есть еще одна точка отказа.В вашем конечном месте назначения файла может не хватить места на диске, но вы все равно записываете загрузку как успешную.
Бонусные баллы: вы фактически выполняете экранирование своих данных перед выполнением запроса и проверяете, выполняет ли запросsuceeded.Не часто вижу это на этом сайте.