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
Отправлено: 30 Сентября, 2012 - 17:03:10
Post Id



Частый гость


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


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

[+][+]


вот скрипт
PHP:
скопировать код в буфер обмена
  1. <form action="reg.php" enctype="multipart/form-data" method="post">
  2.                 <table>
  3.                         <tr>
  4.                 <input name="img" type="file" size="2046">
  5.                                 <td><input type="submit" value="Добавить" /></td>
  6.                         </tr>
  7.                 </table>
  8.         </form>
  9. <?PHP
  10.  
  11.  
  12. $path_to_image_directory = 'images/cash/'; //Папка, куда будут загружаться полноразмерные изображения
  13.  
  14. function createThumbnail($filename) {
  15.  
  16. $final_width_of_image = 240; //Размер изображения которые Вы хотели бы получить (И ШИРИНА И ВЫСОТА)
  17. $path_to_image_directory = 'images/cash/'; //Папка, куда будут загружаться полноразмерные изображения
  18. $path_to_thumbs_directory = 'images/';//Папка, куда буду загружать миниатюры
  19.        
  20.         //Определяем формат изображения
  21.         if(preg_match('/[.](jpg)$/', $filename))
  22.         {
  23.                 $im = imagecreatefromjpeg($path_to_image_directory . $filename);
  24.         }
  25.         elseif(preg_match('/[.](gif)$/', $filename))
  26.         {
  27.                 $im = imagecreatefromgif($path_to_image_directory . $filename);
  28.         }
  29.         elseif(preg_match('/[.](JPG)$/', $filename))
  30.         {
  31.                 $im = imagecreatefromjpeg($path_to_image_directory . $filename);
  32.         }
  33.         elseif(preg_match('/[.](png)$/', $filename))
  34.         {
  35.                 $im = imagecreatefrompng($path_to_image_directory . $filename);
  36.         }
  37.                 else
  38.                 {
  39.                         $error = true;
  40.                 }
  41.        
  42.         $ox = imagesx($im);
  43.         $oy = imagesy($im);
  44.        
  45.         $nx = $final_width_of_image;
  46.         $ny = $final_width_of_image;
  47.        
  48.         $nm = imagecreatetruecolor($nx, $ny);
  49.        
  50.         imagecopyresampled($nm, $im, 0, 0, 0, 0, $nx, $ny, $ox, $oy);
  51.        
  52.         //imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);
  53.        
  54.         if(!file_exists($path_to_thumbs_directory)) {
  55.           if(!mkdir($path_to_thumbs_directory)) {
  56.                           $error = true;
  57.            die("Возникли проблемы загрузки изображения! Попробуйте снова!");
  58.                    
  59.           }
  60.        }
  61.  
  62.         imagejpeg($nm, $path_to_thumbs_directory . $filename);
  63.         $foto = '<img src="' . $path_to_thumbs_directory . $filename . '" alt="image" />';
  64.         echo '<br />Изображение успешно загружено!';
  65. }
  66.  
  67. if(isset($_FILES['img']))
  68. {
  69.         //Ставим допустимые форматы изображений для загрузки
  70.         if(preg_match('/[.](jpg)|(JPG)|(gif)|(png)$/', $_FILES['img']['name']))
  71.          {
  72.                 $filename_date = date("dGijsmy");//дата и время загрузки
  73.  
  74.                 $filename = $filename_date.$_FILES['img']['name'];
  75.                
  76.                 $source = $_FILES['img']['tmp_name'];      
  77.                 $target = $path_to_image_directory . $filename;
  78.                
  79.                 move_uploaded_file($source, $target);
  80.                
  81.                 createThumbnail($filename);            
  82.         }
  83. }
  84.  
  85. //удаляю оригинал
  86. unlink("$target");     
  87. ?>


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


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



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




1) ругуляра - шлак
2) регулярка тут вощбе не нужна
3) проверять файл по одному только разрешению - плохая затея

livote пишет:
мне нужен тест в плане безопасности. что бы грузились только изображения..
Безопасностью тут и не пахнет... загрузить можно все что угодно.

livote пишет:
если что не так скажите что отредактировать
редактировать смысла нет. Делаете Ctr+A, Delete и начинаете писать.

livote пишет:
unlink("$target");
Забыл


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
livote
Отправлено: 30 Сентября, 2012 - 17:47:46
Post Id



Частый гость


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


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

[+][+]


Саныч
ясно.с php в плане загрузки изображений я почти 0.буду пробовать редактировать.

в принципе со всем разберусь.кроме одного.БЕЗОПАСНОСТЬ.помогите с этим.что бы хорошая защита была.


-----
Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
 
 Top
Alho
Отправлено: 30 Сентября, 2012 - 18:03:48
Post Id



Посетитель


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


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




Ну скажем обычно достаточно проверить MIME-тип и в htaccess запретить в данной папке выполнение всего и вся.

Как параноид режим можно перегонять изображения через gd - точно весь вредный код подпортится.
 
 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