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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Ydxsa
Отправлено: 29 Апреля, 2019 - 20:07:54
Post Id


Новичок


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


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




Добрый вечер, разобрался с загрузкой файлов на сервер, но появилась проблема. Необходимо задать рандомное имя для файла, который загружается на сервер, дабы все названия были уникальны(желательно в md5). Вот такой код обработчика у меня:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2.  
  3. if(isset($_FILES)) {
  4.  
  5. $allowedTypes = array('application/octet-stream','application/zip','application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/vnd.oasis.opendocument.text','application/vnd.ms-word.document.12','application/vnd.openxmlformats-officedocument.word');
  6.  
  7. $uploadDir = "directory/";
  8.  
  9. for($i = 0; $i < count($_FILES['file']['name']); $i++) {
  10.  
  11. $uploadFile[$i] = $uploadDir . ($_FILES['file']['name'][$i]);
  12.  
  13. $fileChecked[$i] = false;
  14.  
  15. echo $_FILES['file']['name'][$i]." | ".$_FILES['file']['type'][$i]." — ";
  16.  
  17. for($j = 0; $j < count($allowedTypes); $j++) {
  18.  
  19. if($_FILES['file']['type'][$i] == $allowedTypes[$j]) {
  20.  
  21. $fileChecked[$i] = true;
  22.  
  23. break;
  24.  
  25. }
  26.  
  27. }
  28.  
  29. if($fileChecked[$i]) {
  30.  
  31. if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $uploadFile[$i])) {
  32.  
  33. echo "Success <br>";
  34.  
  35. } else {
  36.  
  37. echo "Error".$_FILES['file']['error'][$i]."<br>";
  38.  
  39. }
  40.  
  41. } else {
  42.  
  43. echo "Error TYPE FILE!<br>";
  44.  
  45. }
  46.  
  47. }
  48.  
  49. } else {
  50.  
  51. echo "Вы не прислали файл!" ;
  52.  
  53. }
  54.  
  55. ?>
 
 Top
LIME
Отправлено: 30 Апреля, 2019 - 11:07:46
Post Id


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


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


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




тогда уж бери хэш от всего содержимого
чтобы копии одного файла не загружать
PHP:
скопировать код в буфер обмена
  1. $newName = md5(file_get_contents($_FILES['file']['tmp_name'][$i]));
 
 Top
Строитель Модератор
Отправлено: 30 Апреля, 2019 - 12:36:48
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




LIME, может удобнее было бы md5_file() ?
 
 Top
LIME
Отправлено: 30 Апреля, 2019 - 12:48:06
Post Id


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


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


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




Строитель и не только удобнее но и быстрее подозреваю
я было подумал поискать как md5 к стримам применить...но...
Здорово
 
 Top
LIME
Отправлено: 01 Мая, 2019 - 18:32:36
Post Id


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


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


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




Строитель ты вообще в курсе что алгоритм md5 умеет дохэшировать строку
на этом основана одна уязвимость
короче хэш для подписи надо обязательно препендить
не передавать подпись аппендом
если ты понимаешь о чем я
 
 Top
Строитель Модератор
Отправлено: 01 Мая, 2019 - 18:51:15
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




LIME пишет:
Строитель ты вообще в курсе что алгоритм md5 умеет дохэшировать строку
на этом основана одна уязвимость
короче хэш для подписи надо обязательно препендить
не передавать подпись аппендом
если ты понимаешь о чем я
Не, не знал - я не настолько в тонкостях разбираюсь.
 
 Top
LIME
Отправлено: 01 Мая, 2019 - 18:59:21
Post Id


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


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


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





Спойлер (Отобразить)
 
 Top
Строитель Модератор
Отправлено: 01 Мая, 2019 - 19:40:48
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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





Спойлер (Отобразить)
 
 Top
LIME
Отправлено: 01 Мая, 2019 - 19:45:48
Post Id


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


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


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





Спойлер (Отобразить)
 
 Top
Строитель Модератор
Отправлено: 01 Мая, 2019 - 19:59:06
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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





Спойлер (Отобразить)
 
 Top
LIME
Отправлено: 01 Мая, 2019 - 20:04:23
Post Id


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


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


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





Спойлер (Отобразить)
 
 Top
Строитель Модератор
Отправлено: 01 Мая, 2019 - 21:20:41
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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





Спойлер (Отобразить)
 
 Top
Мелкий Супермодератор
Отправлено: 02 Мая, 2019 - 12:43:59
Post Id



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


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


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





Спойлер (Отобразить)


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 02 Мая, 2019 - 13:16:53
Post Id


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


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


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




У меня самая лучшая самооценка))
 
 Top
Строитель Модератор
Отправлено: 02 Мая, 2019 - 13:28:14
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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





Спойлер (Отобразить)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB