Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как в скрипте загрузки изображений сделать фильтр по формату

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
livote
Отправлено: 29 Августа, 2012 - 16:23:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)

[+][+]


Как в скрипте загрузки изображений сделать фильтр по формату. Что бы были только изображения а не вся что то другое, если не изображение - то выводить ошибку с нужным текстом


-----
Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
 
 Top
просто даня
Отправлено: 29 Августа, 2012 - 17:11:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Март 2012  
Откуда: sev-kav, budennovsk


Помог: 1 раз(а)

[+][+]


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $allowed_filetypes = array('.jpg','.gif','.bmp','.png','.torrent','.php','.css','.js','.exe','.rar','.zip','.7-zip','.html','.htm');
  4.  
  5. $max_filesize = 999999999999999999999;
  6.  
  7. $upload_path = "../" . $_POST["dir"] . "/";
  8.  
  9. $filename = $_FILES['userfile']['name'];
  10.  
  11. $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
  12.  
  13. if(!in_array($ext,$allowed_filetypes))
  14. die('Данный тип файла не поддерживается.');
  15.  
  16. if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
  17. die('Фаил слишком большой.');
  18.  
  19. if(!is_writable($upload_path))
  20. die('Невозможно загрузить фаил в папку.');
  21.  
  22. if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
  23. {
  24. echo '<center><h1>Ваш фаил успешно загружен</h1><br>>>>>><a href="' . $upload_path . $filename . '">' . $upload_path . $filename . '</a><<<<<</center>';
  25. chmod($upload_path . $filename, 0755);
  26. }
  27. else
  28. {
  29. echo 'При загрузке возникли ошибки. Попробуйте ещё раз.';
  30. }
  31. ?>
 
 Top
OrmaJever Модератор
Отправлено: 29 Августа, 2012 - 17:31:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




livote getimagesize() индекс масива 2 сравнить с расширениями изображений.
(Добавление)
просто даня пишет:
PHP:
скопировать код в буфер обмена
  1. $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);

Ну и чё? Залью javascript с расширением .jpg и он исполнится и что дальше? Однако


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
livote
Отправлено: 29 Августа, 2012 - 17:39:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)

[+][+]


максимальный размер файла в байтах?


-----
Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
 
 Top
просто даня
Отправлено: 29 Августа, 2012 - 17:59:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Март 2012  
Откуда: sev-kav, budennovsk


Помог: 1 раз(а)

[+][+]


да.
не знаю что дальше, лучше подскажи как сделать чтоб нельзя было залить JS с расширением картинки
 
 Top
KingStar
Отправлено: 29 Августа, 2012 - 18:08:03
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




просто даня еще раз, не знаешь - не лезь со своим говнокодом, на месте модераторов уже бы давно тебя в баню отправил

PHP:
скопировать код в буфер обмена
  1. $types = array('jpg','gif','bmp');
  2.  
  3. $ext = end(explode(".", $_FILES['filename']['name']));
  4.  
  5. if(!in_array($ext, $types))
  6. {
  7.    die('Данный тип файла не поддерживается.');
  8. }

(Добавление)
OrmaJever он заблудится в getimagesize Улыбка


-----
То что программа работает, не означает что она написана правильно!
 
 Top
просто даня
Отправлено: 29 Августа, 2012 - 18:46:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Март 2012  
Откуда: sev-kav, budennovsk


Помог: 1 раз(а)

[+][+]


я ему скинул пример, думал сам справиться
(Добавление)
но getimagesize это лиш получает размер картинки...
 
 Top
Stivir
Отправлено: 29 Августа, 2012 - 18:53:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Май 2012  


Помог: 2 раз(а)




KingStar, как думаете если через Ваш фильтр пропустить javascript с расширением .jpg, он его тормознет или пропустит?
 
 Top
KingStar
Отправлено: 29 Августа, 2012 - 19:09:02
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




просто даня для тебя - пусть будет так, Stivir - заблудится он в getimagesize

PHP:
скопировать код в буфер обмена
  1. list($width, $height, $type) = getimagesize($input);
  2. $types = array('','gif','jpeg','png');
  3. if(!$types[$type]) { die('Данный тип файла не поддерживается.'); }


-----
То что программа работает, не означает что она написана правильно!
 
 Top
OrmaJever Модератор
Отправлено: 29 Августа, 2012 - 19:10:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




просто даня пишет:
но getimagesize это лиш получает размер картинки...

false!
Ещё есть одна функция которая определяет мим тип mime_content_type(). Она лучше getimagesize, я просто сразу не мог вспомнить название ;)


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Stivir
Отправлено: 29 Августа, 2012 - 19:52:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Май 2012  


Помог: 2 раз(а)




OrmaJever, по Вашей ссылке к ф-ии mime_content_type() написано:
(только PHP 4CVS)
попробовал её потестить, мой php 535 ругнулся,
Fatal error: Call to undefined function mime_content_type() in D:\htdocs
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB