CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Имя файла
Официальный форум Eleanor CMS » Для вебмастеров и владельцев сайтов » Комната программистов
Привет народ, у меня есть небольшой хостинг файлов.

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

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

Кто знает подскажите. :friends:
NoIndex
Как вариант — хэшируем в md5 время до милисикунд. Т.е:
md5(date('d.m.y') . microtime());
Я в этом не очень силён  :rolleyes:

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

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


А вообще, если сами не разберётесь — покажите скрипт, я помогу.
Alexander
http://php.net/tempnam
Alexander, спасибо почитаю
<?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
Мммдаа... Не скрипт, а хлам.

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

P.S. Вечерком накатаю скрипт с проверкой MIME-типов и выложу, а сейчас я ухожу... =)
Next
Цитата (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
Цитата (Next @ 21.6.2009, 14:29)
PS: здесь скобки не нужны

Не обязательно. Можно и с ними. Вообще, хорошим тоном считается когда они стоят.
Next
Цитата (NoIndex @ 21.6.2009, 17:04)
Вообще, хорошим тоном считается когда они стоят.
Где это ты такое вычитал?
NoIndex
Цитата (Next @ 21.6.2009, 22:52)
Где это ты такое вычитал?

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

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

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

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

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

При всех операторах, где можно ограничить содержание одной строкой. Проще сказать, при каких операторах скобки опускать нельзя: например, switch
NoIndex
Хорошо. Скажи мне — какой смысл убирать скобки в if-else? Что тебе это толком даст? Мне лично это даёт не понятный кода и всё. Я не собираюсь жертвовать понятностью кода, ради каких-то 10-15 строк :-)
Next
else
	  echo &#39;<span>При загрузке возникли ошибки. Попробуйте ещё раз.</span>&#39;;
Тебе не понятно это?)

У каждого стиль свой. Че мы тут из-за какой то мелочи спорим... Ты там вроде скрипт написать собирался
NoIndex
Цитата (Next @ 22.6.2009, 0:14)
Тебе не понятно это?)

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

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

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