Закачка файла через PHP и file managers

gr1nader
На сайте с 26.10.2012
Offline
20
721

суть проблемы такова, есть некий скрипт который отдает файл через пхп:

        header('Pragma: public');

header('Connection: Keep-Alive');
header('Content-Type: $mimetype');
header('Content-Length: ' . filesize($filepath));
header('Content-Disposition: attachment; filename="'.$filename.'"');
ob_clean();
flush();
//readfile($filepath);

if (@readfile($filepath)) {
unlink($filepath);
}

die();

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

---------- Добавлено 22.06.2013 в 23:24 ----------

на других сайтах там где отдача идет через пхп таких граблей не замечал.

---------- Добавлено 23.06.2013 в 00:22 ----------

косяк нашел если без проверки на скачивание т.е если так

readfile($filepath);
/*
if (@readfile($filepath)) {
unlink($filepath);
}
*/

то отдает файл а если как в первом варианте то нет, как решит что делать первый раз с таким сталкиваюсь

OK
LEOnidUKG
На сайте с 25.11.2006
Offline
1742
#1

1. А вы никогда не думали или не видели у файлообменников типо такого: Ваша ссылка будет доступна сутки и т.п.?

Отдавайте файл спокойно, а потом просто кроном чистите старые файлы.

2. То, что PHP это серверный язык вам ничего не говорит? :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
gr1nader
На сайте с 26.10.2012
Offline
20
#2

я об этом думал но специфика сервиса не подразумевает динамических ссылок, просто нужно удалять файл после закачки, и чем отличается

readfile($filepath);
от
 if (@readfile($filepath)) { ... }
почему 1й вариант отдает нормально а 2й только в браузерах. вот в чем ворпрос.
Mik Foxi
На сайте с 02.03.2011
Offline
1100
#3
LEOnidUKG:
1. А вы никогда не думали или не видели у файлообменников типо такого: Ваша ссылка будет доступна сутки и т.п.?
Отдавайте файл спокойно, а потом просто кроном чистите старые файлы.

2. То, что PHP это серверный язык вам ничего не говорит? :)

Вы предлагаете делать кучу копий файла с разными именами?

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

и для контроля за скачиванием не нужно юзать пхп (отдавать файлы через php както не по человечески), пхп скрипт просто создает на диске ссылку на файл и редиректит на нее.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
LEOnidUKG
На сайте с 25.11.2006
Offline
1742
#4
foxi:
Вы предлагаете делать кучу копий файла с разными именами?
не проще ли создавать символическую ссылку на него, а через некоторое время ее чистить?
и для контроля за скачиванием не нужно юзать пхп (отдавать файлы через php както не по человечески), пхп скрипт просто создает на диске ссылку на файл и редиректит на нее.

Смотря какая идёт нагрузка и на, что именно :)

Иногда проще создать копию и удалить её, чем мучить БД и искать в ней название файла.

Решение задач много, я выхожу из подхода ТС-а к данной проблеме.

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
gr1nader:
если качает браузер любой из проверенных то все ок но если попадает на файл манагер скажем FDM то качается только html часть файла содержащеко скрипт, где копать?

В мозгу.

1. Нафик я (как юзер) буду качать файло бродилкой, если я специально для этого поставил файлокачалку?*
2. Нормальные файлокачалки умеют передавать правильный ЮА и рефферер. **

*Читай: не создавай юзерам геммор.
**Читай: бесполезно.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
gr1nader
На сайте с 26.10.2012
Offline
20
#6

а по делу ни кто не ответит? понятно что поставил на первый вариант, но всеже...

IL
На сайте с 20.04.2007
Offline
435
#7
gr1nader:
а по делу ни кто не ответит? понятно что поставил на первый вариант, но всеже...

В логах намёк на ответ лежит.

gr1nader:
только html часть файла содержащеко скрипт

Зачем в скрипте скачивания HTML-часть?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
ДП
На сайте с 23.11.2009
Offline
203
#8
gr1nader:
а по делу ни кто не ответит? понятно что поставил на первый вариант, но всеже...

Есть вероятность, что качалка качает или в несколько потоков или делает сначала запрос методом HEAD, чтобы узнать размер файла.

А так как у вас файл после выдачи удаляется - то на вторую попытку и отдается страница.

Посмотрите, что у вас в логах сервера или к скрипту лог прикрутите.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий