Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP загрузка файлов с уникальными именами / 6 сообщений из 6, страница 1 из 1
09.08.2014, 21:25
    #38716625
lucky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP загрузка файлов с уникальными именами
Здрасте, уважаемые! Сделал форму для загрузки изображений, которая переименовывает файлы в md5 исходя из начального имени и времени загрузки. Исходя из сгенерированного имени будет создаваться запись в базе данных со ссылкой на данную картинку.
Вопрос: такие имена будут точно уникальными? Случаем не возможна ли такая ситуация, что пользователи в один момент загрузят файлы с одинаковым именем и им будет присвоена одинаковая md5? Что вызовет перезапись одного из файлов.
Ну и в целом по коду какие замечания будут?
Сам код тестовой странички:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<?php
echo <<< _END
<html>
    <head>
        <title>Загрузка файла на сервер</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
    </head>
    <body>

    <form enctype="multipart/form-data" action="upload_img.php" method="post">
     <input type="hidden" name="MAX_FILE_SIZE" value="5000000" />
     Выберете файл: <input type="file" name="userfile" />
     <input type="submit" value="Загрузить" />
     </form>
_END;

if ($_FILES)
{
    $original_name = $_FILES['userfile']['name'];
    $ext = pathinfo($original_name, PATHINFO_EXTENSION); // расширение
    $file_name = md5(basename($original_name).time()).'.'.$ext; // новое имя файла
    move_uploaded_file($_FILES['userfile']['tmp_name'], $file_name);
    echo "Загруженное изображение: '$file_name'
<img src='$file_name' />";
}
echo "</body></html>";
?>
...
Рейтинг: 0 / 0
09.08.2014, 22:32
    #38716657
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP загрузка файлов с уникальными именами
lucky89Вопрос: такие имена будут точно уникальными? Случаем не возможна ли такая ситуация, что пользователи в один момент загрузят файлы с одинаковым именем и им будет присвоена одинаковая md5?Вообще говоря, хотя количество вариантов хешей md5 и довольно велико, но, тем не менее, конечно и точно известно. Это один момент. Второй момент заключается в том, что одному и тому же хешу соответствует множество вариантов исходной строки. Таким образом, существует ненулевая вероятность генерации уже существующей строки.

В этом плане конкатенация времени в юникстайм как последовательность во времени и чего-то еще (случайное число, например) даст гораздо меньшую вероятность совпадения (уникальность "чего-то еще" необходима только в пределах одной секунды).
...
Рейтинг: 0 / 0
10.08.2014, 15:30
    #38716792
lucky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP загрузка файлов с уникальными именами
авторпоследовательность во времени и чего-то еще
Спасибо. Так и сделал.
Код: php
1.
$file_name = time().rand(10000,99999).'.jpg'; // новое имя файла
...
Рейтинг: 0 / 0
11.08.2014, 09:25
    #38716975
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP загрузка файлов с уникальными именами
я делал так - time().uniqid()
...
Рейтинг: 0 / 0
11.08.2014, 09:52
    #38717002
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP загрузка файлов с уникальными именами
uniqid()
Получает уникальный идентификатор с префиксом, основанный на текущем времени в микросекундах .

чем неустраивает?
...
Рейтинг: 0 / 0
12.08.2014, 21:21
    #38718793
lucky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP загрузка файлов с уникальными именами
авторuniqid()
Я не знал о его существовании. Буду использовать, раз он именно для этого предназначен.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP загрузка файлов с уникальными именами / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]