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

Форум PHP

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

 

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

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

тема: Загрузка изображений
 
 автор: kis-kis   (08.01.2007 в 09:58)   письмо автору
 
 

Как при загрузке изображений на сервер присвоить им определенные имена, допустим чтобы все файлы начинались так - "av-", а продолжением была цифра, ID пользователя.
Например пользователь с ID-5, загрузил картинку avatar.jpg или avatar.gif и ее имя должно стать соответственно av-5.jpg или av-5.gif?

Спасибо.

   
 
 автор: kasmanaft   (08.01.2007 в 10:19)   письмо автору
 
   для: kis-kis   (08.01.2007 в 09:58)
 

Вопрос в том, как получить из "avatar.jpg" "av-5.jpg" ?

<?
$str 
'avatar.jpg';
$pos strrpos($str'.');
$id 5;
$new_str 'av-'.$id.substr($str$pos);
echo 
$new_str;
?>


Новое имя нужно подставлять при копировании файла из временной дирректории

   
 
 автор: kis-kis   (08.01.2007 в 13:01)   письмо автору
 
   для: kasmanaft   (08.01.2007 в 10:19)
 

Получилось вот что:


<?php
$path 
"$mm_abpath/users/avatars/";
$max_size $mm_avatar_size;

if(isset(
$add)) {
$str $HTTP_POST_FILES['userfile']['name']; 
$pos strrpos($str'.'); 
$id $s_userid
$HTTP_POST_FILES['userfile']['name'] = 'av-'.$id.substr($str$pos); 

if (!isset(
$HTTP_POST_FILES['userfile'])) exit;

if (
is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

if (
$HTTP_POST_FILES['userfile']['size']>$max_size
{
echo 
"<span class=textbr>Размер файла превышает допустимый</span>"
}
else
if ((
$HTTP_POST_FILES['userfile']['type']=="image/gif") || ($HTTP_POST_FILES['userfile']['type']=="image/pjpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg")) {


$res copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .
$HTTP_POST_FILES['userfile']['name']);
if (!
$res) { echo "<span class=textbr>При загрузке произошла ошибка</span>";} 
else { echo 
"<span class=textb>Файл успешно загружен</span>";
$new_avatar=$HTTP_POST_FILES['userfile']['name']; 
$query "UPDATE users SET avatar='$new_avatar' WHERE id = '$s_userid'";
$req mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
}
} else { echo 
"<span class=textbr>Недопустимый тип файла, используйте jpg или gif</span>";}
}
}
?>


Такой вариант безопасен? А как добавить сюда еще проверку размера изображения?

   
 
 автор: kasmanaft   (08.01.2007 в 13:30)   письмо автору
 
   для: kis-kis   (08.01.2007 в 13:01)
 

Имеется ввиду в пикселах? Такой размер можно получить ф-ей getimagesize (травить на $_FILES['userfile']['tmp_name'])

Возвращает массив

Array[0] = Width
Array[1] = Height
Array[2] = Image Type Flag
Array[3] = width="xxx" height="xxx"
Array[4] = channels (PHP >= 4.3.0)
Array[5] = bits (PHP >= 4.3.0)
Array[6] = mime (PHP >= 4.3.0)

// Такой вариант безопасен?
Вроде бы да, только строчку
if (!isset($HTTP_POST_FILES['userfile'])) exit;
лучше бы поднять наверх и использовать массив $_FILES

   
Rambler's Top100
вверх

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