Скрипт загрузки изображения на сайт PHP
В страницу с формой Загрузки нужно вставить форму:
Код HTML
Размер изображения не превышает 512 Кб, пиксели по ширине не более 500, по высоте не более 1500. <form name="upload" action="download_img.php" method="POST" ENCTYPE="multipart/form-data"> Выберите файл для загрузки: <input type="file" name="userfile"> <input type="submit" name="upload" value="Загрузить"> </form>
Обычная форма загрузки изображения. При нажатии на Загрузить мы перейден на страницу download_img.php.
Форма будет ссылать на файл download_img.php. В нём для того, чтобы обезопасить сервер от загрузки посторонних файлов вместо изображений достаточно указать проверку размера файла. В случае возврата FALSEв ответ на размер изображения, файл загружен НЕ будет.
Код PHP
$uploaddir = 'images/'; // это папка, в которую будет загружаться картинка $apend=date('YmdHis').rand(100,1000).'.jpg'; // это имя, которое будет присвоенно изображению $uploadfile = "$uploaddir$apend"; //в переменную $uploadfile будет входить папка и имя изображения // В данной строке самое важное - проверяем загружается ли изображение (а может вредоносный код?) // И проходит ли изображение по весу. В нашем случае до 512 Кб if(($_FILES['userfile']['type'] == 'image/gif' || $_FILES['userfile']['type'] == 'image/jpeg' || $_FILES['userfile']['type'] == 'image/png') && ($_FILES['userfile']['size'] != 0 and $_FILES['userfile']['size']<=512000)) { // Указываем максимальный вес загружаемого файла. Сейчас до 512 Кб if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { //Здесь идет процесс загрузки изображения $size = getimagesize($uploadfile); // с помощью этой функции мы можем получить размер пикселей изображения if ($size[0] < 501 && $size[1]<1501) { // если размер изображения не более 500 пикселей по ширине и не более 1500 по высоте echo "Файл загружен. Путь к файлу: <b-->http:/yoursite.ru/".$uploadfile.""; } else { echo "Загружаемое изображение превышает допустимые нормы (ширина не более - 500; высота не более 1500)"; unlink($uploadfile); // удаление файла } } else { echo "Файл не загружен, вернитеcь и попробуйте еще раз"; } } else { echo "Размер файла не должен превышать 512Кб"; }
Для проверки на то, действительно загружается изображение или вредоносный код, используется встроенная в php функция getimagesize.
getimagesize($image);
Идёт проверка и на тип файла (изображение) и на его размер. Не определится, если это не изображение. Возможно, код и не самый короткий, но поставленные задачи выполняет. Спасибо за внимание!
Комментарии