Проблемы при загрузке файлов на сервер
Игорь Собакин

Здравствуйте, уважаемые программисты!!!
Я осваиваю php и у меня возникло два вопроса по загрузке файлов на сервер(имею ввиду загрузка файлов через форму без использования ajax/json только чистый php)
1) Все говорят что проверка загружаемого файла на тип через $FILES['filename']['type'] - это дохлый номер, потому что $FILES['filename']['type'] можно полностью поменять с клиентской стороны(подобно hidden полям) и это опасно... Так вот как правильно проверять тип файла(я понимаю, что абсолютной защиты не существует и тем не менее) кто нибудь покажите как выглядит эта функция грамотной проверки типа загружаемого файлаа то гугол мне ничего за 2 часа не показал((((
2) Не могу никак обработать следующую ошибку: допустим через форму нам нужно загружать картинки размером не более 2-х мегабайт(то есть настройки php.ini менять ни к чему) но вот пользователь в поле загрузки выбрал случайно (или специально) файл размером более 2-х мб, проблема в том, что в этом случае файл даже не загрузится во временную папку tmp на сервере(с одной стороны хорошо с точки зрения безопасности НО), произойдёт ошибка, которая не будет ни как обозначаться, даже если в скрипте прописать error_reporting(E_ALL); и самое главное эта ошибка остановит действие скрипта, и мы останемся внутри POST запроса, что является сбоем...
Подскажите пожалуйста как такую ошибку грамотно обрабатывать(чтобы если размер файла больше настроек php.ini то мы бы могли преадресоваться GET-ом и как то обозначит эту ошибку для пользователя? Подчёркиваю, что не использовать ajax/json ) На php.su приводится такой пример:
<form enctype="multipart/form-data" action="__URL__" method="POST">
<!-- Поле MAX_FILE_SIZE должно быть указано до поля загрузки файла -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<!-- Название элемента input определяет имя в массиве $_FILES -->
Отправить этот файл: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
но как работать с MAX_FILE_SIZE в данной ситуации мне не понятно(((
Заранее спасибо за помощь)

Игорь Собакин 8 месяцев назадСпасибо 0
1 чел.