Удаляем префикс к загружаемым на сервер файлам в DLE

Удаляем префикс к загружаемым на сервер файлам в DLEПри загрузке любого файла на сайт DLE добавляет префикс к файлу в формате unixtime (например 1266540926_yandex.jpg).
Данный хак позволяет не только убрать префикс перед именем файла, а так же будет проверять существует ли файл с таким же именем в этой же папке и в этом случае добавит к нему суффикс 1,2,3 и т.д.
Например: yandex.jpg, yandex1.jpg, yandex2.jpg
В блоге WordPress суффиксы к имени файла добавляются таким же образом.
Ставится данный хак очень просто, для этого потребуется отредактировать следующие файлы:
./engine/ajax/upload.php
./engine/inc/files.php

Открываем файл ./engine/ajax/upload.php,
Ищем код (в оригинальном файле 145 и 146 строка):
$file_prefix = time() + rand( 1, 100 );
$file_prefix .= "_";
и удаляем его!

Далее ищем (в оригинальном файле 158 строка):
$image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;
И заменяем на:
$image_name = totranslit( implode( ".", $img_name_arr ) );

$file_prefix = '';
$number = '';

while ( file_exists( $config_path_image_upload . $image_name . $number . '.' . $type ) ) {
    $number = $number+1;
}

$image_name =  $image_name . $number . '.' . $type;

Далее ищем (уже только в файле ./engine/inc/files.php):
if( $serverfile == '' ) {
И перед этим кодом вставляем:
$img_name_arr = explode( ".", $image_name );
$type = end( $img_name_arr );
$curr_key = key( $img_name_arr );
unset( $img_name_arr[$curr_key] );
$image_name = implode( ".", $img_name_arr );
$file_prefix = '';
$number = '';
while ( file_exists( ROOT_DIR . "/uploads/files/" . $image_name . $number . '.' . $type ) ) {
    $number = $number+1;
}
$image_name =  $image_name . $number . '.' . $type;


В файле ./engine/inc/files.php проделываем все то же самое!

Кому лень редактировать файлы, готовые можете скачать отсюда: upload_files.zip [21,51 Kb] (cкачиваний: 129)
Другие новости по теме:

Категория: Хаки ----- Просмотров: 3791 ----- Комментариев: 19

Вернуться

  • Группа: User
  • ICQ: --
  • Регистрация: 20.11.2009
  • Комментариев: 67
  • Публикаций: 36
^
интересно!
ставить не буду, но всеравно спасибо!

--------------------
  • SKDzR

  • 7 марта 2010 21:44
  • Группа: User
  • ICQ: 819585
  • Регистрация: 1.08.2008
  • Комментариев: 102
  • Публикаций: 11
^
а если дубль?
картнки с одинаковыми именами, но к разным новостям?

--------------------
  • WhyMax

  • 8 марта 2010 01:35
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
SKDzR,
Этот хак как раз для этого и предназначен!
Прочитайте в самом начале внимательно что он делает в данном случае.
Есть другой хак, который просто позволяет убрать префикс unix-time и добавить свой, вот он то как раз дубли не любит.
Кстате мой хак с ним совместим, для этого нужно найти:
$image_name = $image_name . $number . '.' . $type;
и заменить на
$image_name = $file_prefix . $image_name . $number . '.' . $type;


Внимание, эта строчка в файле ./engine/inc/files.php повторяется 2 раза!
Заменять ее нужно везде!
$image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;
  • Skater

  • 8 марта 2010 09:14
  • Группа: User
  • ICQ: --
  • Регистрация: 5.11.2009
  • Комментариев: 26
  • Публикаций: 1
^
Класс автору +1 fellow
  • DaImeR

  • 8 марта 2010 09:55
  • Группа: User
  • ICQ: 416980738
  • Регистрация: 22.01.2009
  • Комментариев: 59
  • Публикаций: 0
^
чушь

--------------------
  • KeNeDi

  • 8 марта 2010 14:20
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
а чем стандарт не нравится?
  • WhyMax

  • 8 марта 2010 19:48
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Без хака url изображения:
https://mastermind.pp.ua/datalife-engine/uploads/posts/2010-03/1267980662_dle_files.gif

С хаком:
https://mastermind.pp.ua/datalife-engine/uploads/posts/2010-03/dle_files.gif

При желании:
https://mastermind.pp.ua/datalife-engine/uploads/posts/2010-03/site.ru_dle_files.gif
  • maxito

  • 8 марта 2010 22:29
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Идея украдена http://x2x.x3x.su/index.php?newsid=17 отсюда
  • WhyMax

  • 8 марта 2010 23:23
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
maxito,
Вы префикс от суффикса отличить не можете?

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

А на x2x.x3x.su действительно как вы говорите "украден" хак с другого сайта (вобще хз где это в первые опубликовали), ведь у всех привычка не давать ссылки на источник.
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Спасибо, зачет! Как раз над этим думал...
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
извините за оффтоп, как сделать, чтобы при добавлении картинки на сервер, оригинал картинки удалялся, а оставалась только обрезанная картинка (когда в админке указан максимальный размер в пикселях одной из сторон)

кто знает????
  • WhyMax

  • 10 марта 2010 23:37
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
В настройках:
Максимально допустимые размеры изображения
в таком случае миниатюры создаваться не будут, а изображения будут уменьшаться до указанных размеров.
  • Группа: User
  • ICQ: --
  • Регистрация: 16.08.2008
  • Комментариев: 156
  • Публикаций: 2
^
Скрипт неработает....
загрузил картинку 1.jpg через пару дней еще такаеже картинка попалась с названием 1.jpg ... скрипт нефига недобавил и незагрузил картинку. написал что такая картинка уже есть!!!!
  • WhyMax

  • 12 марта 2010 16:39
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Значит ставили не внимательно.
Ищем и заменяем ВСЕ (2 раза):
$image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;

в файле files.php эта строка повторяется 2 раза.
К сожалению в новости отредактировать не могу и нет возможности на каждом сайте поправлять.

Читайте тут: http://whymax.ru/scripts/5-dle-prefix.html
и не ошибетесь.
Проблем ни у кого не было.
  • Группа: User
  • ICQ: --
  • Регистрация: 16.08.2008
  • Комментариев: 156
  • Публикаций: 2
^
WhyMax,
да я и нечего неискал в коде... я скачал архив и заменил ;)
  • WhyMax

  • 14 марта 2010 11:52
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Хак изнаально писался под DLE 8.3.
Через несколько дней вышел 8.5, обновил его и забыл сделать кое какие изменения.
Я давал ссылку на файл: http://whymax.ru/scripts/5-dle-prefix.html (смотрите внизу)
Чтобы в случае чего можно было поправить ошибки, а администраторы mastermind.pp.ua/datalife-engine решили загрузить файл на свой сервер.
Так что качайте с whymax.ru, а тут я уже ничего не поделаю))
  • WhyMax

  • 17 марта 2010 14:40
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Поправил баг при мультизагрузке, подробнее на моем блоге.
  • Lobs

  • 3 апреля 2010 08:13
  • Группа: User
  • ICQ: --
  • Регистрация: 18.10.2008
  • Комментариев: 102
  • Публикаций: 0
^
Цитата: SKDzR
а если дубль?
картнки с одинаковыми именами, но к разным новостям?

Вообще-то движок раскидывает картинки по папкам, принадлежащим новостям. Так что конфликта не будет.

--------------------
  • DjsLife

  • 18 апреля 2010 14:03
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
недочет при загрузке файлов


как это сделать при загрузке имя файла не изменяется

Example :Вначале, когда загрузить файл с именем Alex Base - Live.mp3, но после того, как загрузили Prefix_alex-base-live.mp3


Я хочу быть, как в начале : Preifx_Alex Base - Live.mp3

может быть изменена так, как я хочу?

и, извините меня, но я использую переводчика, если бы я даже и не писать четко, извиниться