Файловый менеджер на PHP

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
Представляю мой проект — файловый менеджер на PHP
Очень полезная штука на разрабатываемом сайте для «сделай быстро».
Отличие от других проектов — всё в одном файле, даже настройки.
Некоторые настройки хранятся в куках.
Функционал:
1. Навигация по папкам.
2. Управление — редактировать файлы, создать, удалить, положить в архив, закачать и скачать, поменять права, посмотреть картинки.
! При редактировании файла восстанавливает старую дату редактирования, чтобы не палиться, если использовать в качестве шелла !
Обновлено 07.03.2022: восстановление старой даты можно отключить.
3. Возможность включения авторизации.
4. Выполнение кода PHP, шаблоны кода.
5. Выполнение запросов MySQL, шаблоны запросов.
6. Мини-прокси
7. Настройки всего этого и интерфейса — хранятся внутри менеджера
fileman.png
!!! Первая секция настроек хранится в куках, 3 последующие в самом файле.
Языки — английский, немецкий, французский, русский, украинский (переводы добавлены благодаря пользователям старого нулледа)
В общем, написано для себя и помогает каждый день.
Пост создан как для предложений по функционалу и интерфейсу, так и для привлечения к разработке новых людей.
 
Последнее редактирование:

secilius

Созидатель (II)
Сообщения
11
Симпатии
2
Баллы
137
есть один важный ньюанс, сейчас на многих хостах стоит свой антивирус, и этот код он воспримет как "webshell".
О чём сразу уведомит клиента, имейте ввиду.
 

CAPAXA

Команда форума
Разрушитель (V)
Сообщения
633
Симпатии
603
Баллы
25 766
есть один важный ньюанс, сейчас на многих хостах стоит свой антивирус, и этот код он воспримет как "webshell".
О чём сразу уведомит клиента, имейте ввиду.
Интересно бы узнать на какой триггер срабатывает
 

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
есть один важный ньюанс, сейчас на многих хостах стоит свой антивирус, и этот код он воспримет как "webshell".
О чём сразу уведомит клиента, имейте ввиду.
На 5 разных хостингах ни один антивирус не сигналил. Собственно, дурацкий антивирус реагирует обычно на команды eval, что в менеджере есть, умный на выполнение команд операционной системы из php, чего в менеджере нет.
 

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
Добрый день, друзья.
Хотел бы допилить вот что в менеджере, но не сображу как.
60% менеджера сейчас занимают переводы (напомню, весь менеджер состоит из одного файла).
По идее, хранить переводы внутри не айс. Они должны подтягиваться с внешнего источника.
Кому-то нужен только русский, кому-то украинский, а кому-то и английский норм.
К тому же, при хранении внутри файла, редактировать это тяжело и делаю только я.
А точнее, правлю только русский при необходимости, чего уж там)
При выносе в внешний источник только переводов, возможно, переводы бы слали и правили другие носители языка.
Проще всего, видимо, загружать на Гитхаб, создав отдельный проект, и потом подгружать в менеджер настройки в формате json, например.
И вот как это реализовать, я не знаю, чтобы с Гитхаба отдавался json не архивом, а в нормальном виде?
Ну или любые другие идеи выслушаю, чтобы вынести языки из файломенеджера и подгружать по необходимости.
Возможно, по этой схеме загружать и другие настройки из внешнего источника.
Было бы круто.
 
Последнее редактирование:

CAPAXA

Команда форума
Разрушитель (V)
Сообщения
633
Симпатии
603
Баллы
25 766
Можно перевод и в js вставить. А гитхаб может отдавать файл в plain.
 

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
Можно перевод и в js вставить. А гитхаб может отдавать файл в plain.
Можно и в js, но в настройках имхо дурнее — раз сохранил и никакой нагрузки на браузер.
Знать бы ещё, как это сделать, чтобы он отдавал в plain. Я не часто использую Гитхаб.
 
Последнее редактирование:

CAPAXA

Команда форума
Разрушитель (V)
Сообщения
633
Симпатии
603
Баллы
25 766

Reset

Разрушитель (V)
Сообщения
46
Симпатии
40
Баллы
406
При выборе языка с гитхаба подтягивается контент файла переводов - как в примере выше и сохранятеся локально.
 

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
При выборе языка с гитхаба подтягивается контент файла переводов - как в примере выше и сохранятеся локально.
Точнее сохраняется в настройках менеджера внутри. Файлменеджер в 1 файле и это по возможности должно сохраняться. Можно ещё в куках хранить, но не знаю, хватит ли там места. Скорее всего нет: с какого-то мануала — «не более 50 cookies на домен, максимум 4 КБ на cookie». Можно задействовать Localstorage, но это также может быть нестабильно.
 
Последнее редактирование:

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
Файловый менеджер обновился.
Изменения: добавлены настройки, восстанавливать ли время модификации файла после его редактирования.
Описание:
В прошлых релизах файловый менеджер всегда восстанавливал старое время модификации файла после редактирования. Теперь это можно включить или отключить. Восстановление старого времени (до редактирования) не позволяло на некоторых хостингах сбросить кеш OPcache и изменения файла могут быть не видны.
Дополнительно: небольшие исправления для работы вплоть до PHP 7.4
Протестировать под PHP 8 пока нет возможности, но думаю будет работать тоже.
 

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
Обновление, версия 1.4

Описание:
Файлы локализации вынесены из файлового менеджера и теперь грузятся с GitHub.
Текущая локализация сохраняется в файловом менеджере.

Результат:
Файл стал легче на 10% (примерно), файлы локализации теперь можно редактировать отдельно, в том числе предлагать от других пользователей.
Пока доступно 5 языков, хранятся здесь https://github.com/Den1xxx/Filemanager/tree/master/languages

Заметки к релизу.
Вариант хранения языка в куках тестировал, но не срослось: ограничение по куке 4кб, у нас в русском уже больше из-за 2-байтной кодировки.
Вообще-то оно работало, но ругалось матом)))
Для уменьшения размера пробовал даже жать gzip'om куки, но тогда возникают другие сложности и как результат — нестабильная работа.
Localstorage тоже не вариант, PHP с ним напрямую работать не может.
У хранения в файле, на котором я окончательно остановился, есть один минус: при работе с файлом разных людей с разными языковыми предпочтениями файл будет постоянно перезаписываться. В этом случае лучше пусть используют разные файлы.
 
Последнее редактирование:

Den1xxx

Разрушитель (V)
Сообщения
116
Симпатии
67
Баллы
948
Обновление, версия 1.5
Добавлен поиск по содержимому файлов, с заданием маски файла, рекурсивно по папкам.

Поиск не выводит часть текста, как grep в линукс, вместо этого выводится список ссылками на найденные файлы, для редактирования.
Ибо фраза может быть и в 300 файлах, и больше.
Используйте с осторожностью на больших данных!
 
Верх