dle.in.ua » Хаки » Удаляем префикс к загружаемым на сервер файлам в DLE

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

Автор: WhyMax от 6-03-2010, 20:03
Удаляем префикс к загружаемым на сервер файлам в 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качиваний: 132)
  • Группа: User
  • Icq: --
  • Комментариев: 67
  • Публикаций: 36
  • интересно!
    ставить не буду, но всеравно спасибо!

    --------------------
    • raler1992
    • Регистрация: 20.11.2009
    • Репутация: (1|1|0)
    • 7 марта 2010 21:39
    • 1
    ^
  • Группа: User
  • Icq: 819585
  • Комментариев: 102
  • Публикаций: 11
  • а если дубль?
    картнки с одинаковыми именами, но к разным новостям?

    --------------------
    • SKDzR
    • Регистрация: 1.08.2008
    • Репутация: (0|0|0)
    • 7 марта 2010 21:44
    • 2
    ^
  • Группа: Гости
  • 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;
    • WhyMax
    • Регистрация: --
    • Репутация: (||)
    • 8 марта 2010 01:35
    • 3
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 26
  • Публикаций: 1
  • Класс автору +1 fellow
    • Skater
    • Регистрация: 5.11.2009
    • Репутация: (0|0|0)
    • 8 марта 2010 09:14
    • 4
    ^
  • Группа: User
  • Icq: 416980738
  • Комментариев: 59
  • Публикаций: 0
  • чушь

    --------------------
    • DaImeR
    • Регистрация: 22.01.2009
    • Репутация: (0|0|0)
    • 8 марта 2010 09:55
    • 5
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • а чем стандарт не нравится?
    • KeNeDi
    • Регистрация: --
    • Репутация: (||)
    • 8 марта 2010 14:20
    • 6
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Без хака url изображения:
    http://dle.in.ua/uploads/posts/2010-03/1267980662_dle_files.gif

    С хаком:
    http://dle.in.ua/uploads/posts/2010-03/dle_files.gif

    При желании:
    http://dle.in.ua/uploads/posts/2010-03/site.ru_dle_files.gif
    • WhyMax
    • Регистрация: --
    • Репутация: (||)
    • 8 марта 2010 19:48
    • 7
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Идея украдена http://x2x.x3x.su/index.php?newsid=17 отсюда
    • maxito
    • Регистрация: --
    • Репутация: (||)
    • 8 марта 2010 22:29
    • 8
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • maxito,
    Вы префикс от суффикса отличить не можете?

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

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

    кто знает????
    • SysAdmin
    • Регистрация: --
    • Репутация: (||)
    • 9 марта 2010 23:08
    • 11
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • В настройках:
    Максимально допустимые размеры изображения
    в таком случае миниатюры создаваться не будут, а изображения будут уменьшаться до указанных размеров.
    • WhyMax
    • Регистрация: --
    • Репутация: (||)
    • 10 марта 2010 23:37
    • 12
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 156
  • Публикаций: 2
  • Скрипт неработает....
    загрузил картинку 1.jpg через пару дней еще такаеже картинка попалась с названием 1.jpg ... скрипт нефига недобавил и незагрузил картинку. написал что такая картинка уже есть!!!!
    • Dimas-rap
    • Регистрация: 16.08.2008
    • Репутация: (0|0|0)
    • 11 марта 2010 07:56
    • 13
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Значит ставили не внимательно.
    Ищем и заменяем ВСЕ (2 раза):
    $image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type;

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

    Читайте тут: http://whymax.ru/scripts/5-dle-prefix.html
    и не ошибетесь.
    Проблем ни у кого не было.
    • WhyMax
    • Регистрация: --
    • Репутация: (||)
    • 12 марта 2010 16:39
    • 14
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 156
  • Публикаций: 2
  • WhyMax,
    да я и нечего неискал в коде... я скачал архив и заменил ;)
    • Dimas-rap
    • Регистрация: 16.08.2008
    • Репутация: (0|0|0)
    • 12 марта 2010 20:20
    • 15
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Хак изнаально писался под DLE 8.3.
    Через несколько дней вышел 8.5, обновил его и забыл сделать кое какие изменения.
    Я давал ссылку на файл: http://whymax.ru/scripts/5-dle-prefix.html (смотрите внизу)
    Чтобы в случае чего можно было поправить ошибки, а администраторы dle.in.ua решили загрузить файл на свой сервер.
    Так что качайте с whymax.ru, а тут я уже ничего не поделаю))
    • WhyMax
    • Регистрация: --
    • Репутация: (||)
    • 14 марта 2010 11:52
    • 16
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Поправил баг при мультизагрузке, подробнее на моем блоге.
    • WhyMax
    • Регистрация: --
    • Репутация: (||)
    • 17 марта 2010 14:40
    • 17
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 102
  • Публикаций: 0
  • Цитата: SKDzR
    а если дубль?
    картнки с одинаковыми именами, но к разным новостям?

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

    --------------------
    • Lobs
    • Регистрация: 18.10.2008
    • Репутация: (0|0|0)
    • 3 апреля 2010 08:13
    • 18
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • недочет при загрузке файлов


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

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


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

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

    и, извините меня, но я использую переводчика, если бы я даже и не писать четко, извиниться
    • DjsLife
    • Регистрация: --
    • Репутация: (||)
    • 18 апреля 2010 14:03
    • 19
    ^
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.