|
|
|
|
|
для: Trianon
(09.02.2007 в 01:22)
| | >похоже, не хватает OR (strtolower($_FILES['avatara']['type']) == "image/pjpeg") в конце скрипта.
>В начале стоит. В конце - нет.
>
>PS Метод, при котором файлам при загрузке на сервер не назначаются серверные имена - дыряв по своей природе изрядно. Но... дело ваше...
пасибо за помощь ))) а можно по подробнее.............в чем заключается недостаток такого скрипта!? и каким образом это угрожает безопасности???? | |
|
|
|
|
|
|
|
для: Hades
(08.02.2007 в 22:34)
| | похоже, не хватает OR (strtolower($_FILES['avatara']['type']) == "image/pjpeg") в конце скрипта.
В начале стоит. В конце - нет.
PS Метод, при котором файлам при загрузке на сервер не назначаются серверные имена - дыряв по своей природе изрядно. Но... дело ваше... | |
|
|
|
|
|
|
| есть файловый обработчик загрузки аваторы, который изменяет габариты изображения .....урл аваторы хранится в базе данных......все впринципе работает вот только неудаляется 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']; }
|
| |
|
|
|
|