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 - 30 Сентября, 2012 - 17:03:10 - перейти к сообщению
вот скрипт
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. ?>


я его немного доработал.он не мой.мне нужен тест в плане безопасности. что бы грузились только изображения..если что не так скажите что отредактировать
2. Саныч - 30 Сентября, 2012 - 17:36:02 - перейти к сообщению
1) ругуляра - шлак
2) регулярка тут вощбе не нужна
3) проверять файл по одному только разрешению - плохая затея

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

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

livote пишет:
unlink("$target");
Забыл
3. livote - 30 Сентября, 2012 - 17:47:46 - перейти к сообщению
Саныч
ясно.с php в плане загрузки изображений я почти 0.буду пробовать редактировать.

в принципе со всем разберусь.кроме одного.БЕЗОПАСНОСТЬ.помогите с этим.что бы хорошая защита была.
4. Alho - 30 Сентября, 2012 - 18:03:48 - перейти к сообщению
Ну скажем обычно достаточно проверить MIME-тип и в htaccess запретить в данной папке выполнение всего и вся.

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

 

Powered by ExBB FM 1.0 RC1