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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с загрузкой файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: php генерирует одинаковый случайный набор символов
Reniksa
Отправлено: 16 Января, 2011 - 10:52:18
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Здравствуйте. В рамках создания цмс добавления новостей сайт возникла новая проблема. Вроде все работало и не предвещало беды, но вот что произошло.
Есть функция загрузки файла, в данном случае изображения.

PHP:
скопировать код в буфер обмена
  1. function upload($_FILES,$url,$maxsize = 1024){
  2.     @mkdir("img", 777);
  3.     if($_FILES['IMG']['name'] !=''){
  4.                 //Проверяем размер файла
  5.            if($_FILES['IMG']['size'] != 0 AND $_FILES['IMG']['size']<=($maxsize*1024)) {
  6.                //Проверяем расширение файла
  7.  
  8.                $ext=array(".gif", ".jpeg", ".jpg");
  9. if(in_array(strrchr($_FILES['IMG']['name'],"."),$ext)){
  10.             //Проверяем загрузился ли файл на сервер
  11.                if(is_uploaded_file($_FILES['IMG']['tmp_name']))   {
  12.             //Перемещаем загруженный файл в необходимую папку $url
  13.                 if(move_uploaded_file($_FILES['IMG']['tmp_name'], $url."/".md5(basename($_FILES['IMG']['name'])))) {
  14.                         return TRUE;
  15.  
  16.                 }  else {   return FALSE;}
  17.              }  else {  return FALSE;}
  18.          } else { return FALSE;}
  19.       } else { return FALSE;}
  20.  
  21.     }
  22.     }


Но было замечено, что некоторые изображения получают фнкцией md5 одинаковый код, оттого в папку с изображениями не перемещаются, то есть в базе данных фигурируют, а в папке их нет. А одна статья вообще в базу данных не записывает никакого url. Отчего так может быть? Помогите пожалуйста или советом мудрым или скрипты мои кто не сочтет за труд посмотреть. Я в панике.
 
 Top
Мелкий Супермодератор
Отправлено: 16 Января, 2011 - 12:26:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Reniksa пишет:
Отчего так может быть?

md5 для того и создавался, чтобы 2 прогона одной строки дали одинаковый результат, но обратно было расшифровывать нецелесообразно.
Т.е. вся ваша ошибка сводится лишь к тому, что у двух загруженных файлов одинаковое исходное имя.

Мне любопытно, почему вы новое имя файла никуда не сохраняете и не возвращаете его из функции, чтобы было бы крайне логично.

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


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB