Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: удаление файлов
 
 автор: Hades   (08.02.2007 в 22:34)   письмо автору
 
 

есть файловый обработчик загрузки аваторы, который изменяет габариты изображения .....урл аваторы хранится в базе данных......все впринципе работает вот только неудаляется big_файлы и small_файлы форматы jpg, в то время, как файлы формата gif он прекрасно удаляет......подскажите пожалуйста че для етого надо сделать!!? заранее спасибо!!!!!

  // Если поле выбора фотографии не пустое,
  // закачиваем её на сервер и переименовываем
  if ((!empty($_FILES['avatara']['tmp_name']) && $_FILES['avatara']['tmp_name'] != "-")&&(empty($error)))
  {
     //Удаляем старую аватару
     if(isset($queryy['photo']))
     {
     unlink($queryy['photo']);
     }
     else
     {
     continue;
     }
     //Проверяем на соответствие формату
     if (($_FILES['avatara']['type'] == "image/jpeg") OR ($_FILES['avatara']['type'] == "image/pjpeg") OR ($_FILES['avatara']['type'] == "image/png") OR ($_FILES['avatara']['type'] == "image/x-png") OR ($_FILES['avatara']['type'] == "image/gif"))
     {
         # Копируем оригинальное изображение
         if(!copy($_FILES['avatara']['tmp_name'], "images/photo/big_".$_FILES['avatara']['name']))
         {
           $newaction = "";
           $error = $error."<li><b> Ошибка при копировании изображения</b>";
         }


         # Собираем информацию о изображении
         $img_url = "images/photo/big_".$_FILES['avatara']['name']; // адрес оригинального изображения
         $img_name = $_FILES['avatara']['name']; // имя
         $img_size = $_FILES['avatara']['size']; // размер
         $img_info = getimagesize($img_url);
         $img_width = $img_info['0'];   // ширина изображения
         $img_height = $img_info['1'];  // высота изображения
         $img_format = $img_info['2'];  // расширение файла
         $img_format = image_type_to_mime_type($img_format); // mime-тип

         # Провереям, превышает ли ширина 450 пикселов
         if ($img_width > 140)
         {
           # Определяем высоту будующей превьюшки
           $img_real_height = $img_height;                  // перед этим резервируем реальную высоту
           $width_diff = $img_width - 140;                  // выясняем, на сколько мы урезали изображение в ширине
           $one_percent = $width_diff/100;                  // 1% от того, на сколько урезали
           $thirty_percent = 30*$one_percent;               // 30% от того, на сколько урезали
           $img_height = $img_real_height/($img_width/140); // новая уменьшанная высота изображения
           $img_height = @floor($img_height);               // убираем дробную часть

           # Определяем название превью
           $preview_name = "images/photo/small_".$_FILES['avatara']['name'];

           # Создаем пустое изображение
           $preview_true_color = imagecreatetruecolor(140, $img_height);

           # Определяем формат изображения и открываем наше большое изображение (оригинальное)
           # Если формат изображения JPG
           if ($img_format == "image/jpeg")
           {
             $img_src = imagecreatefromjpeg($img_url);
           }
           # Если формат изображения PJPEG
           else if ($img_format == "image/pjpeg")
           {
             $img_src = imagecreatefromjpeg($img_url);
           }
           # Если формат изображения x-png
           else if ($img_format == "image/x-png")
           {
             $img_src = imagecreatefromjpeg($img_url);
           }
           # Если формат изображения PNG
           else if ($img_format == "image/png")
           {
             $img_src = imagecreatefrompng($img_url);
           }

           # Если формат изображения GIF
           else if ($img_format == "image/gif")
           {
             $img_src = imagecreatefromgif($img_url);
           }
           #Иначе
           else
           {
               $newaction = "";
               $error = $error."<li><b> Вы должны выбрать Изображение в формате <u>jpg</u> или <u>png</u></b>";
           }

           # Копируем в пустое изображение уменьшенную компию большого изображения (оригинального)
           if (imagecopyresampled($preview_true_color, $img_src, 0, 0, 0, 0, 140, $img_height, $img_width, $img_real_height))
           {
             # Если копирование успешно, записываем готовое превью изображения в формате JPG
             if (!imagejpeg($preview_true_color, $preview_name, 100))
             {
               $error = $error."<li><b> Ошибка при создании изображения</b>";
             }
           }
           else
           {
             $error = $error."<li><b> Ошибка при копировании изображения</b>";
           }

           # Разрушаем изображения
           if (!imagedestroy($img_src))
           {
             $error = $error."<li><b> Ошибка при разрушении изображения!</b>";
           }
           if (!imagedestroy($preview_true_color))
           {
             $error = $error."<li><b> Ошибка при разрушении изображения!</b>";
           }
         }
       }
       else
       {
         $newaction = "";
         $error = $error."<li><b> Вы должны выбрать изображение в формате <u>jpg</u> или <u>png</u> или <u>gif</u></b>";
       }
    // Извлекаем из имени файла расширение
    $ext = strtolower(strrchr($preview_name, "."));
    // Разрешаем загружать файлы только определённого форматм
    $extentions = array(".jpg",".gif",".png",".jpeg");
    // Формируем путь к файлу
    if(in_array($ext, $extentions))
    {
      $path="images/photo/".date("YmdHis",time()).$ext;
      // Перемещаем файл из временной директории сервера в
      // директорию /photo Web-приложения
      if (copy($preview_name, $path))
      {
        // Изменяем права доступа к файлу
        chmod($path, 0644);
        $newurl_avatara = $path;
      }
    }
    if ((strtolower($_FILES['avatara']['type']) == "image/jpeg") OR (strtolower($_FILES['avatara']['type']) == "image/jpg") OR (strtolower($_FILES['avatara']['type']) == "image/png") OR (strtolower($_FILES['avatara']['type']) == "image/gif"))
    {
    // Уничтожаем файл во временной директории
    unlink($_FILES['avatara']['tmp_name']);
    unlink("images/photo/big_".$_FILES['avatara']['name']);
    unlink("images/photo/small_".$_FILES['avatara']['name']);
    }
  }
  else { $newurl_avatara = $gueryy['photo']; }

   
 
 автор: Trianon   (09.02.2007 в 01:22)   письмо автору
 
   для: Hades   (08.02.2007 в 22:34)
 

похоже, не хватает OR (strtolower($_FILES['avatara']['type']) == "image/pjpeg") в конце скрипта.
В начале стоит. В конце - нет.

PS Метод, при котором файлам при загрузке на сервер не назначаются серверные имена - дыряв по своей природе изрядно. Но... дело ваше...

   
 
 автор: Hades   (09.02.2007 в 21:43)   письмо автору
 
   для: Trianon   (09.02.2007 в 01:22)
 

>похоже, не хватает OR (strtolower($_FILES['avatara']['type']) == "image/pjpeg") в конце скрипта.
>В начале стоит. В конце - нет.
>
>PS Метод, при котором файлам при загрузке на сервер не назначаются серверные имена - дыряв по своей природе изрядно. Но... дело ваше...

пасибо за помощь ))) а можно по подробнее.............в чем заключается недостаток такого скрипта!? и каким образом это угрожает безопасности????

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования