Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

Доработка вложений

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 10 лет 2 месяца
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 247 раз

Доработка вложений

Сообщение HAMMER663 »

при скачивании файла ссылка имеет вид /download/file.php?id=55 вот этот id надо зашифровать в md5 и чтобы прямое обращение к файлу не работало, то есть при вводе в адресную строку браузера ссылки вида http://site.ru/download/file.php?id=55 не происходила загрузка файла

Итоговый вариант.

Итак, в file.php делалось следующее
1) После строки

Код: Выделить всё

$download_id = request_var('id', 0);
добавлена строка:

Код: Выделить всё

$download_sess = request_var('sess', 0);
2) После строки

Код: Выделить всё

$user->setup('viewtopic');

Код: Выделить всё

if (md5(sha1(md5(base64_encode($download_id.$user->data['user_id'])))) != $download_sess) {
trigger_error('ERROR_NO_ATTACHMENT');
}
в function_posting.php
это

Код: Выделить всё

$download_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'mode=view&id=' . (int) $attach_row['attach_id'], true, ($attach_row['is_orphan']) ? $user->session_id : false);
заменяем на:

Код: Выделить всё

$download_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'mode=view&id=' . (int) $attach_row['attach_id'] . '&sess='.md5(sha1(md5(base64_encode($attach_row['attach_id'].$user->data['user_id'])))), true, ($attach_row['is_orphan']) ? $user->session_id : false);
теперь что не работает:
при скачивании файла выдает "данного вложения не существует", однако если редактировать сообщение, в котором есть вложение, то ссылка на скачивание файла там имеет вид /download/file.php?mode=view&id=2&sess=4cbb8bca878610a945ee4892cd0dc2cd
при этом все работает и файл скачать можно... но в шаблон почему-то такая ссылка так и не выводится

может еще какой файл надо отредактировать?
Последний раз редактировалось Alek$ 16.02.2011 17:52, всего редактировалось 2 раза.
Причина: Добавлена ссылка на правильный вариант

Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 10 лет 2 месяца
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 247 раз

Re: Доработка вложений

Сообщение HAMMER663 »

подскажите хоть куда копать? где файл, который отвечает за вывод аттачей в сообщении пользователей?

Добавлено спустя 55 минут 38 секунд:
так как мне никто не помог.. ладно.всем спасибо :)

Аватара пользователя
Айдар
Former team member
Сообщения: 1687
Стаж: 9 лет 6 месяцев
Откуда: KZN
Благодарил (а): 94 раза
Поблагодарили: 189 раз

Re: Доработка вложений

Сообщение Айдар »

HAMMER663 писал(а):где файл, который отвечает за вывод аттачей в сообщении пользователей?
viewtopic.php
Имеет смысл покопаться в /includes/functions_posting.php
In Web We Trust

Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 10 лет 2 месяца
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 247 раз

Re: Доработка вложений

Сообщение HAMMER663 »

Айдар писал(а):viewtopic.php
нету там
Айдар писал(а):Имеет смысл покопаться в /includes/functions_posting.php
я там уже изменения сделал

Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 10 лет 2 месяца
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 247 раз

Re: Доработка вложений

Сообщение HAMMER663 »

открываем файл includes/function_content.php
и находим там следующее:

Код: Выделить всё

$download_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id']);
заменяем на:

Код: Выделить всё

$download_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id'] . "&sess=" . md5(sha1(md5(base64_encode($attachment['attach_id'].$user->data['user_id'])))));
находим далее:

Код: Выделить всё

$thumbnail_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id'] . '&t=1');
заменяем на:

Код: Выделить всё

$thumbnail_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id'] . '&sess=' . md5(sha1(md5(base64_encode($attachment['attach_id'].$user->data['user_id'])))) . '&t=1');
найти

Код: Выделить всё

$inline_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id']);
заменить на

Код: Выделить всё

$inline_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id'] . '&sess=' . md5(sha1(md5(base64_encode($attachment['attach_id'].$user->data['user_id'])))));
Наслаждаемся:)

Аватара пользователя
sweetah
phpBB 2.0.6
Сообщения: 501
Стаж: 10 лет 5 месяцев
Благодарил (а): 106 раз
Поблагодарили: 26 раз

Re: Доработка вложений

Сообщение sweetah »

Странно работает этот мод. Большинство файлов действительно стало недоступно по ссылке типа site.ru/download/file.php?id=55. Но некоторые все же доступны... не могу установить с чем это связано. Сначала подумал что доступны аттачи с id=0, но нет.

Может я не все правки сделал?
file.php
includes/function_posting.php
includes/function_content.php
правильно?

Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 10 лет 2 месяца
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 247 раз

Re: Доработка вложений

Сообщение HAMMER663 »

sweetah возможно и есть еще какие-то файлы, которые я не учел.
расскажите какие именно аттачи доступны по ссылке вида /download/file.php?id=55

Аватара пользователя
sweetah
phpBB 2.0.6
Сообщения: 501
Стаж: 10 лет 5 месяцев
Благодарил (а): 106 раз
Поблагодарили: 26 раз

Re: Доработка вложений

Сообщение sweetah »

Все вложения - картинки. Больше ничего не могу сказать. [ссылку убрал...]. Причем из-под гостя пропадает одно вложение. Из-под администратора пропадает другое (свое же). Из-под testuser все вложения на месте.
testuser
testtest
Последний раз редактировалось sweetah 16.07.2011 22:47, всего редактировалось 1 раз.

Аватара пользователя
iМаньяк
phpBB 2.0.0
Сообщения: 200
Стаж: 9 лет 10 месяцев
Благодарил (а): 32 раза
Поблагодарили: 3 раза

Re: Доработка вложений

Сообщение iМаньяк »

Подскажите кто может можно сделать ссылку на изображения вида http://site.ru/forum/files/nazvanie_faila.png и при загрузке файла 1.png если таковой уже имеется то просто изменить имя на к примеру дату загрузки 160611_1.png

alex88_9
phpBB 1.4.4
Сообщения: 133
Стаж: 8 лет
Благодарил (а): 34 раза

Re: Доработка вложений

Сообщение alex88_9 »

А какой в итоге последний вариант? Который в первом сообщении или этот Доработка вложений Или оба нужно устанавливать?

Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 10 лет 2 месяца
Откуда: Сергиев Посад
Благодарил (а): 390 раз
Поблагодарили: 731 раз

Re: Доработка вложений

Сообщение владимир1983 »

В первом сообщении темы есть ссылка на Итоговый вариант.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)

Shredder
Former team member
Сообщения: 2178
Стаж: 11 лет 6 месяцев
Благодарил (а): 212 раз
Поблагодарили: 547 раз

Re: Доработка вложений

Сообщение Shredder »

А в чём смысл этих манипуляций, если не секрет?

Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 10 лет 2 месяца
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 247 раз

Re: Доработка вложений

Сообщение HAMMER663 »

Shredder смысл в том чтоб любой юзер не смог скачать вложение по прямой ссылке http://site.ru/download/file.php?id=55.
То есть если спрятать вложение под hide, то скачать это вложение всё равно можно методом подбора id вложения

Cmepka
phpBB 1.4.0
Сообщения: 31
Стаж: 8 лет 3 месяца
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Доработка вложений

Сообщение Cmepka »

Описание проблемы: ссылки открываются всё-равно по ID, хотя после ID слато отображаться ссесия и хеш какой-то...
Произведенные изменения, после которых начались неполадки: Изменял три файла по инструкции
Версия phpBB: 3.0.12
Используемые стили: subsilver2
Используемые моды: Чистый форум + регистрация через СМС-шлюз + автомод 1.0.2 + быстрая цитата (доработка стандартной)
Версия PHP:
Используемая СУБД и её версия:
Ссылка на конференцию: http://f1.excellent.ua/viewtopic.php?f=2&t=1
Есть ли у вас тестовый аккаунт: login: 123456 ; pass: 123456
Использовался ли поиск для решения проблемы:
Если да, то какие запросы вы использовали:

Вернуться в «Для авторов (phpBB 3.0.x)»