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
Форумы портала PHP.SU :: Версия для печати :: Как в скрипте загрузки изображений сделать фильтр по формату
Форумы портала PHP.SU » » Вопросы новичков » Как в скрипте загрузки изображений сделать фильтр по формату

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

1. livote - 29 Августа, 2012 - 16:23:51 - перейти к сообщению
Как в скрипте загрузки изображений сделать фильтр по формату. Что бы были только изображения а не вся что то другое, если не изображение - то выводить ошибку с нужным текстом
2. просто даня - 29 Августа, 2012 - 17:11:58 - перейти к сообщению
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. ?>
3. OrmaJever - 29 Августа, 2012 - 17:31:52 - перейти к сообщению
livote getimagesize() индекс масива 2 сравнить с расширениями изображений.
(Добавление)
просто даня пишет:
PHP:
скопировать код в буфер обмена
  1. $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);

Ну и чё? Залью javascript с расширением .jpg и он исполнится и что дальше? Однако
4. livote - 29 Августа, 2012 - 17:39:23 - перейти к сообщению
максимальный размер файла в байтах?
5. просто даня - 29 Августа, 2012 - 17:59:23 - перейти к сообщению
да.
не знаю что дальше, лучше подскажи как сделать чтоб нельзя было залить JS с расширением картинки
6. KingStar - 29 Августа, 2012 - 18:08:03 - перейти к сообщению
просто даня еще раз, не знаешь - не лезь со своим говнокодом, на месте модераторов уже бы давно тебя в баню отправил

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 Улыбка
7. просто даня - 29 Августа, 2012 - 18:46:23 - перейти к сообщению
я ему скинул пример, думал сам справиться
(Добавление)
но getimagesize это лиш получает размер картинки...
8. Stivir - 29 Августа, 2012 - 18:53:35 - перейти к сообщению
KingStar, как думаете если через Ваш фильтр пропустить javascript с расширением .jpg, он его тормознет или пропустит?
9. KingStar - 29 Августа, 2012 - 19:09:02 - перейти к сообщению
просто даня для тебя - пусть будет так, Stivir - заблудится он в getimagesize

PHP:
скопировать код в буфер обмена
  1. list($width, $height, $type) = getimagesize($input);
  2. $types = array('','gif','jpeg','png');
  3. if(!$types[$type]) { die('Данный тип файла не поддерживается.'); }
10. OrmaJever - 29 Августа, 2012 - 19:10:20 - перейти к сообщению
просто даня пишет:
но getimagesize это лиш получает размер картинки...

false!
Ещё есть одна функция которая определяет мим тип mime_content_type(). Она лучше getimagesize, я просто сразу не мог вспомнить название ;)
11. Stivir - 29 Августа, 2012 - 19:52:20 - перейти к сообщению
OrmaJever, по Вашей ссылке к ф-ии mime_content_type() написано:
(только PHP 4CVS)
попробовал её потестить, мой php 535 ругнулся,
Fatal error: Call to undefined function mime_content_type() in D:\htdocs

 

Powered by ExBB FM 1.0 RC1