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

Форум PHP

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

 

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

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

тема: Размер изображения (ширина, высота)
 
 автор: t3ma   (09.12.2008 в 18:02)   письмо автору
 
 

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


<?php
// максимально допустимая ширина загружаемой фотографии
  
$MAX_IMAGES_WIDTH 600;

// максимально допустимая высота загружаемой фотографии
  
$MAX_IMAGES_HEIGHT 1024;

 
$foto $_FILES["photo"]["tmp_name"];
 
$size getimagesize($foto);

   if ((
$size) & &  ($size[0] < $MAX_IMAGES_WIDTH) & &  ($size[1] < $MAX_IMAGES_HEIGHT)) 
  {
    
my_exit("изображение недопустимо");
  }

 if (!
copy($_FILES["photo"]["tmp_name"], "files/" $file_name))
  {
    
my_exit("Произошла ошибка при загрузке файла!");
  }
?>


пустая страница получается...

подскажите что я делаю нетак ?

  Ответить  
 
 автор: BinLaden   (09.12.2008 в 18:09)   письмо автору
 
   для: t3ma   (09.12.2008 в 18:02)
 

<?php

error_reporting
(E_ALL);
ini_set('display_errors''on');

// максимально допустимая ширина загружаемой фотографии 
  
$MAX_IMAGES_WIDTH 600

// максимально допустимая высота загружаемой фотографии 
  
$MAX_IMAGES_HEIGHT 1024

 
$foto $_FILES["photo"]["tmp_name"];
 
$foto_ $foto;
 
$fotoo $foto_;
 
$f0t0 $fotoo;
 
$ph0t0 $f0t0;
 
$ph0t00 $ph0t0;
 
$ph0t000 $ph0t00
 
$size getimagesize($ph0t000); 

 if ((
$size) &&  ($size[0] < $MAX_IMAGES_WIDTH) &&  ($size[1] < $MAX_IMAGES_HEIGHT))  
      { 

  if (!
copy($_FILES["photo"]["tmp_name"], "files/" $file_name)) 
  { 
    
my_exit("Произошла ошибка при загрузке файла!"); 
  } 
}
else
{
   
my_exit("Ошибка в размере: {$size[0]}x{$size[1]}"); 
}

?>

  Ответить  
 
 автор: t3ma   (09.12.2008 в 18:24)   письмо автору
 
   для: BinLaden   (09.12.2008 в 18:09)
 

Спасибо большое, все работает.

А это обязательно так делать:


<?php
 $foto 
$_FILES["photo"]["tmp_name"]; 
 
$foto_ $foto
 
$fotoo $foto_
 
$f0t0 $fotoo
 
$ph0t0 $f0t0
 
$ph0t00 $ph0t0
 
$ph0t000 $ph0t00;  
 
$size getimagesize($ph0t000); 
?>


или можно так:


<?php
 $foto 
$_FILES["photo"]["tmp_name"]; 
 
$size getimagesize($foto); 
?>

  Ответить  
 
 автор: BinLaden   (09.12.2008 в 18:36)   письмо автору
 
   для: t3ma   (09.12.2008 в 18:24)
 

В моём куске кода смысла столько же, сколько и в Вашем.

Если вот этим:
 $foto = $_FILES["photo"]["tmp_name"];  
 $size = getimagesize($foto); 

... Вы пытаетесь упростить код, не записывая каждый раз $_FILES["photo"]["tmp_name"], то почему вот тут:

copy($_FILES["photo"]["tmp_name"], "files/" . $file_name)

Вы снова пишите $_FILES["photo"]["tmp_name"]?

Очевидно, что всё это введение новых переменных -- дурость.

P.S. Прислушайтесь к sim5 насчёт применения copy() в данном случае.

  Ответить  
 
 автор: sim5   (09.12.2008 в 18:13)   письмо автору
 
   для: t3ma   (09.12.2008 в 18:02)
 

Это вы так и пишите & &, или только тут? Вы хоть проверяете, загрузилось ли изображение? И не используйте copy() для загрузки файлов: http://www.php.net/manual/ru/features.file-upload.php.

  Ответить  
 
 автор: t3ma   (10.12.2008 в 12:54)   письмо автору
 
   для: sim5   (09.12.2008 в 18:13)
 

Ок.

Так лучше сделать ?


<?php
if (!move_uploaded_file($_FILES["photo"]["tmp_name"], "files/" $file_name))  
  {  
    
my_exit("Произошла ошибка при загрузке файла!");  
  } 
?>


не понимаю как написать: так !move_uploaded_file или так: move_uploaded_file

  Ответить  
 
 автор: sim5   (10.12.2008 в 13:05)   письмо автору
 
   для: t3ma   (10.12.2008 в 12:54)
 

Ну если move_uploaded_file() взвращает false в случае неудачи, то как надо писать? А вообще же, прежде чем перемещать файл, нужно удостовериться загружен ли он вообще, так как вы еще хотите узнать разрешение его. А для этого можно проверить возвращаемый код ошибки, и если ошибки нет, то проверить разрешение, и, если оно соответсвует вашим требованиям, вот тогда уже move_uploaded_file().

  Ответить  
 
 автор: t3ma   (10.12.2008 в 13:37)   письмо автору
 
   для: sim5   (10.12.2008 в 13:05)
 


<?php
  
list($res) = array_reverse(explode('.'$_FILES["photo"]["name"])); 
  
$file_name date('YmdGis'). "." .$res;

// Проверяем формат загружаемого файла. 
  
if (strpos(strtolower($_FILES["photo"]["type"]), "image") === false)
  {
    
my_exit("Неверный формат загружаемого файла!");
  }

 
$ext strtolower(substr($file_namestrrpos($file_name".") + 1));

// Проверяем формат загруаемых файлов, если формат файла не gif, jpg, png выдаем ошибку.
  
if (($ext != "jpg") && ($ext != "png") &&($ext != "gif") && ($ext != "jpeg"))
  {
    
my_exit("Допустимы только следующие форматы файлов: gif, jpg, png!");
  }

 
$size getimagesize($_FILES["photo"]["tmp_name"]);  

 if ((
$size) &&  ($size[0] < $MAX_IMAGES_WIDTH) &&  ($size[1] < $MAX_IMAGES_HEIGHT))   
      {  
   
 
$errorCode $_FILES['photo']['error'];
  
  if(
$errorCode == UPLOAD_ERR_OK)
 {
  if (!
move_uploaded_file($_FILES["photo"]["tmp_name"], "files/" $file_name))  
  {  
    
my_exit("Произошла ошибка при загрузке файла!");  
  }  
 }
      }

else


   
my_exit("размер загружаемого вами изображения равен <b>{$size[0]}*{$size[1]} пикселей</b> и больше допустимого <b>$MAX_IMAGES_WIDTH*$MAX_IMAGES_HEIGHT пикселей</b>, либо меньше положенного ");  
}
?>


вот так я сделал. думаю правильно, если нет - поправьте меня пожалуйста

  Ответить  
 
 автор: sim5   (10.12.2008 в 13:53)   письмо автору
 
   для: t3ma   (10.12.2008 в 13:37)
 

<?
if (!$_FILES["photo"]["error"]) { //файл загружен, начинаем проверку
$ext = array(1=>"gif","jpg","png");
//вы же обращаетесь к getimagesize() для того чтобы узнать разрешение,
//значит вы одновременно узнаете и тип файла
//зачем вы проверяете тип по расширению???
if (!$size[2] || $size[2] > 3//ошибка, неверный тип файла
//а добавить расширение к имени:
$file_name .= $ext[$size[2]];
//и отрезать расширение от имени можно гораздо проще
}

Вы же сперва пытаетесь проверить файл на ваши ограничения, потом в середине этой проверки проверяте возвращаемую ошибку... Перепишите все и логично. И ошибки лучше (по моему) складывать в одну переменную, которую выводить с возвратом формы пользователю при ошибках.

  Ответить  
Rambler's Top100
вверх

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