X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Имя файла
Гость_zyat_*
сообщение 2009-06-20, 14:31
Сообщение #1



Гости





Привет народ, у меня есть небольшой хостинг файлов.

Так вот, я решил давать каждому загружаемому файлу своё имя и незнаю как это сделать !?

через SQL или просто через PHP получится  :rolleyes:

Кто знает подскажите. :friends:
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-20, 15:03
Сообщение #2
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Как вариант — хэшируем в md5 время до милисикунд. Т.е:
md5(date('d.m.y') . microtime());
Перейти в начало страницы
+Цитировать сообщение
Гость_zyat_*
сообщение 2009-06-20, 16:49
Сообщение #3



Гости





Я в этом не очень силён  :rolleyes:

можно по подробнее?
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-20, 17:07
Сообщение #4
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Куда подробнее? Я всё объяснил.

Когда переносим файл ф-ей move_uploaded_file, указываем переменную name ($name), которую опередялем чуть выше:
$name = md5(date('d.m.y') . microtime());


А вообще, если сами не разберётесь — покажите скрипт, я помогу.

Сообщение отредактировал NoIndex - 2009-06-20, 17:08
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-06-20, 19:55
Сообщение #5
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


http://php.net/tempnam
Перейти в начало страницы
+Цитировать сообщение
Гость_zyat_*
сообщение 2009-06-20, 20:11
Сообщение #6



Гости





Alexander, спасибо почитаю
Перейти в начало страницы
+Цитировать сообщение
Гость_zyat_*
сообщение 2009-06-20, 20:57
Сообщение #7



Гости





<?php$allowed_filetypes = array(&#39;.jpg&#39;,&#39;.gif&#39;,&#39;.bmp&#39;,&#39;.png&#39;); // Здесь мы перечисляем допустимые типы файлов
$max_filesize = 524288; // Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
$upload_path = &#39;./images/&#39;; // Место, куда будут загружаться файлы (в данном случае это папка &#39;images&#39;).
$filename = $_FILES[&#39;userfile&#39;][&#39;name&#39;]; // В переменную $filename заносим точное имя файла (включая расширение).
$ext = substr($filename, strpos($filename,&#39;.&#39;), strlen($filename)-1); // В переменную $ext заносим расширение загруженного файла.

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

if(!in_array($ext,$allowed_filetypes))
die(&#39;<span>Данный тип файла не поддерживается.</span>&#39;);

// Теперь проверим размер загруженного файла и если он больше максимально допустимого, то прерываем выполнение программы и выдаем сообщение.

if(filesize($_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;]) > $max_filesize)
die(&#39;<span>Фаил слишком большой.</span>&#39;);

// Проверяем, доступна ли на запись папка, определенная нами под загрузку файлов (папка files). Если вдруг недоступна, то выдаем сообщение, что на папку нужно поставить права доступа 777.

if(!is_writable($upload_path))
die(&#39;<span>Невозможно загрузить фаил в папку. Установите права доступа - 777.</span>&#39;);

// Загружаем фаил в указанную папку.
if(move_uploaded_file($_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;],$upload_path . $filename))
{
echo &#39;<img src="&#39;. $upload_path . $filename .&#39;"><br><br>
Cсылка на изображение:<br><br>
<input type="text" size="50" onClick="select();" value="http://localhost/php/images/&#39;. $filename .&#39;">&#39;; // Путь к дериктории картинок.
}
else
{
echo &#39;<span>При загрузке возникли ошибки. Попробуйте ещё раз.</span>&#39;;
}
?>





Подалуйста посматрите  :rolleyes:

И подскажите, а то я непонимаю
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-21, 8:16
Сообщение #8
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Мммдаа... Не скрипт, а хлам.

Вообщем всё сделано до безобразия не безопасно и криво.
Можно проверять MIME-тип файла, но и это тоже не безопасно.... Читаем это и это.

P.S. Вечерком накатаю скрипт с проверкой MIME-типов и выложу, а сейчас я ухожу... =)

Сообщение отредактировал NoIndex - 2009-06-21, 8:16
Перейти в начало страницы
+Цитировать сообщение
Next
сообщение 2009-06-21, 10:29
Сообщение #9
Новичок
Иконка группы

Группа: Разработчики
Сообщений: 76
Регистрация: 2008-12-13

Репутация:   нет  
Всего: 8


Цитата (NoIndex @ 21.6.2009, 9:16)
с проверкой MIME-типов

Зачем их проверять то - гораздо важнее загруженный файл, а не передаваемый, тем более mime данные подменить можно. Другое дело, что лучше расширение для записи файла брать из этих самых MIME.
Еще хорошо было бы менять имя загружаемого файла и хранить данные с оригинальным именем в базе. Также можно запретить прямой доступ к загруженному файлу и для обращения к нему написать отдельный скрипт.
Цитата (zyat @ 20.6.2009, 21:57)
substr($filename, strpos($filename,'.'), strlen($filename)-1);

Слабо похоже на расширение...
Во-первых, может так: substr($filename, strpos($filename,'.')+1)?
Во-вторых, зачем вообще изобретать велосипед, когда есть pathinfo( $file, PATHINFO_EXTENSION)?
PS: здесь скобки не нужны
Цитата (zyat @ 20.6.2009, 21:57)
else
{
echo '<span>При загрузке возникли ошибки. Попробуйте ещё раз.</span>';
}
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-21, 16:04
Сообщение #10
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Цитата (Next @ 21.6.2009, 14:29)
PS: здесь скобки не нужны

Не обязательно. Можно и с ними. Вообще, хорошим тоном считается когда они стоят.
Перейти в начало страницы
+Цитировать сообщение
Next
сообщение 2009-06-21, 18:52
Сообщение #11
Новичок
Иконка группы

Группа: Разработчики
Сообщений: 76
Регистрация: 2008-12-13

Репутация:   нет  
Всего: 8


Цитата (NoIndex @ 21.6.2009, 17:04)
Вообще, хорошим тоном считается когда они стоят.
Где это ты такое вычитал?
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-21, 19:19
Сообщение #12
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Цитата (Next @ 21.6.2009, 22:52)
Где это ты такое вычитал?

В рекомендации по написанию чистого кода (у одной компании). Как бы и мне так больше нравится, но даже не в этом суть:
Ты сказал, что они не нужны, а они просто не обязательны при одном единственным операторе.
Перейти в начало страницы
+Цитировать сообщение
Next
сообщение 2009-06-21, 19:27
Сообщение #13
Новичок
Иконка группы

Группа: Разработчики
Сообщений: 76
Регистрация: 2008-12-13

Репутация:   нет  
Всего: 8


Цитата (NoIndex @ 21.6.2009, 20:19)
В рекомендации по написанию чистого кода (у одной компании).

Проекты придумывают свои собств. стили оформления кода только для того, чтобы выделится, а стандарт один
Цитата (NoIndex @ 21.6.2009, 20:19)
Ты сказал, что они не нужны, а они просто не обязательны

не нужен = не обязателен = лишний
Цитата (NoIndex @ 21.6.2009, 20:19)
при одном единственным операторе

при большинстве
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-21, 19:52
Сообщение #14
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Цитата (Next @ 21.6.2009, 23:27)
при большинстве

Это как? O_o
Перейти в начало страницы
+Цитировать сообщение
Next
сообщение 2009-06-21, 20:01
Сообщение #15
Новичок
Иконка группы

Группа: Разработчики
Сообщений: 76
Регистрация: 2008-12-13

Репутация:   нет  
Всего: 8


Цитата (NoIndex @ 21.6.2009, 20:52)
Это как? O_o

При всех операторах, где можно ограничить содержание одной строкой. Проще сказать, при каких операторах скобки опускать нельзя: например, switch

Сообщение отредактировал Next - 2009-06-21, 20:02
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-21, 20:09
Сообщение #16
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Хорошо. Скажи мне — какой смысл убирать скобки в if-else? Что тебе это толком даст? Мне лично это даёт не понятный кода и всё. Я не собираюсь жертвовать понятностью кода, ради каких-то 10-15 строк :-)

Сообщение отредактировал NoIndex - 2009-06-21, 20:09
Перейти в начало страницы
+Цитировать сообщение
Next
сообщение 2009-06-21, 20:14
Сообщение #17
Новичок
Иконка группы

Группа: Разработчики
Сообщений: 76
Регистрация: 2008-12-13

Репутация:   нет  
Всего: 8


else
	  echo &#39;<span>При загрузке возникли ошибки. Попробуйте ещё раз.</span>&#39;;
Тебе не понятно это?)

У каждого стиль свой. Че мы тут из-за какой то мелочи спорим... Ты там вроде скрипт написать собирался
Перейти в начало страницы
+Цитировать сообщение
NoIndex
сообщение 2009-06-21, 20:15
Сообщение #18
Опытный
Иконка группы

Группа: Бета-тестеры
Сообщений: 825
Регистрация: 2008-12-13
Из: Россия → Новосибирск
Версия системы: RC5

Репутация:   нет  
Всего: 24


Цитата (Next @ 22.6.2009, 0:14)
Тебе не понятно это?)

Нет, почему — понятно. Однако мне такой кусок более не приятен, чем со скобками, не знаю почему :-(

Цитата (Next @ 22.6.2009, 0:14)
Ты там вроде скрипт написать собирался

Эээх, собирался... Но доделывал задание, которое мне поручил Саша. Потом как-нибудь увидите... А скрипт отложим (может быть, если будет не лень) — на завтра.

Сообщение отредактировал NoIndex - 2009-06-22, 5:48
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0359 сек.    11 запросов    GZIP включен    Сейчас: 2024-03-28, 16:46