Main screenshot
10
WebDir - Каталог сайтов
(0)

40.00 USD

Author
Ramirez
Продавец
Все товары автора
Рекламное место свободно
Рекламное место свободно

WebDir — это полноценный, production-ready скрипт веб-каталога (web directory) на чистом PHP 8.2+ без лишних зависимостей. Современный glassmorphism-дизайн, тёмная и светлая темы, адаптивный интерфейс, мощная админ-панель, REST API, полнотекстовый поиск — всё готово к установке и работе. Идеально подходит как самостоятельный проект, так и как основа для собственного сервиса.

Архитектура и технологии

  • PHP 8.4 — строгая типизация, современный синтаксис, именованные аргументы
  • Собственный MVC-фреймворк — никакой зависимости от Laravel/Symfony/Yii, только нужный код
  • Feature-based архитектура — модульная структура, каждый функциональный блок изолирован
  • Принципы SOLID, DRY, KISS — чистый, читаемый, легко расширяемый код
  • MySQL 8+ / MariaDB 10.5+ — FULLTEXT-индексы для поиска, оптимизированные составные индексы
  • Redis / файловый кэш — переключается одной строкой в .env
  • Twig 3 — безопасный шаблонизатор с автоэкранированием XSS
  • Docker — готовый docker-compose.yml для локальной разработки (nginx + php-fpm + mysql + redis + phpmyadmin)

Полный список функций

Пользователи и авторизация

ФункцияОписание
РегистрацияФорма с валидацией, проверка уникальности username и email
Подтверждение emailОтправка письма со ссылкой, токен с хешированием SHA-256
АвторизацияЛогин по email + пароль, bcrypt (cost 12)
«Запомнить меня»Безопасный cookie-токен на 30 дней
Сброс пароляОтправка письма, одноразовый токен, TTL 1 час
Профиль пользователяАватар (загрузка + GD-ресайз до 200×200), биография, ссылка на сайт
Смена пароляС проверкой текущего пароля
Ролиuser / moderator / admin с разными правами доступа
Блокировка аккаунтаБан с указанием причины, автоматический выход заблокированного пользователя
Мои сайтыСписок добавленных сайтов с фильтрацией по статусу
Мои отзывыИстория оставленных отзывов с возможностью удаления

Каталог сайтов

ФункцияОписание
Добавление сайтовФорма с полным описанием, краткой аннотацией, тегами, SEO-полями
СкриншотыЗагрузка и авторесайз (GD) до 1200×675, WebP/PNG/JPG/GIF
FaviconАвтоматическое получение через Google Favicons API, локальное хранение
КатегорииДвухуровневые вложенные категории с иконками (emoji), счётчиком сайтов
ТегиДо 10 тегов на сайт, облако тегов с весами, автообновление счётчиков
Статусы сайтовpending → active / rejected / inactive
МодерацияРучная модерация с указанием причины отклонения, уведомление автора на email
РедактированиеВладелец или модератор может редактировать сайт
УдалениеКаскадное удаление (теги, рейтинги, отзывы, статистика)
Redirect-трекингПереход через /go/{id} с подсчётом кликов, дедупликация по IP (1 час)
ПросмотрыПодсчёт уникальных просмотров, дедупликация по IP (30 минут)
РекомендуемыеФлаг is_featured, управление из админки
ПродвижениеФлаг is_promoted с датой окончания, поднятие в топ списка
SEO-поляMeta Title, Meta Description для каждого сайта
Похожие сайтыАвтоматический блок «Похожие» по категории

Поиск

ФункцияОписание
Полнотекстовый поискMySQL FULLTEXT BOOLEAN MODE по title + description + short_description
Boolean режимАвтоматическое добавление +word* для AND-логики и префиксного поиска
Живые подсказкиAJAX-автокомплит с debounce 300мс, навигация стрелками
История поискаСохранение в localStorage, быстрый повтор запроса
Подсветка результатовПодсветка совпадений прямо в карточках результатов
ФильтрацияПо категории, сортировка (релевантность / новые / рейтинг / популярные)
Популярные запросыАвтоматический сбор статистики, виджет популярных тегов и запросов
Лог поискаЗапись всех запросов с количеством результатов для аналитики

Рейтинги и отзывы

ФункцияОписание
Оценка 1–5 звёздИнтерактивный UI, только авторизованные пользователи
Один отзыв на сайтЗащита от дублирования на уровне БД (UNIQUE KEY user_id + site_id)
АнтиспамМаксимум 5 отзывов с одного IP в сутки через кэш
Текст отзываОт 10 до 1000 символов, валидация
Пересчёт рейтингаАвтоматическое обновление rating_avg и ratings_count после каждого отзыва
Удаление отзывовАвтором или модератором
Модерация отзывовСтатусы pending / approved / rejected

Статистика и аналитика

ФункцияОписание
Просмотры сайтаЕжедневная статистика в таблице site_stats
КликиТрекинг переходов с дедупликацией
График для владельцаChart.js-график просмотров/кликов за 30 дней прямо на странице сайта
Аналитика для админаОтдельная страница /admin/stats:
 — Трафик всего каталога за 30 дней (график)
 — Топ-10 сайтов по просмотрам
 — Распределение сайтов по категориям (progress bars)
 — Популярные поисковые запросы
 — Регистрации пользователей за 14 дней (столбчатый график)
Счётчики дашбордаВсего сайтов, активных, на модерации, пользователей, отзывов, суммарные просмотры/клики

Админ-панель

РазделВозможности
ДашбордВиджеты с ключевыми метриками, последние сайты и пользователи, топ по просмотрам
Модерация сайтовВкладки по статусу (ожидают/активные/отклонённые/все), поиск, одобрение одним кликом, отклонение с причиной в модальном окне, значок в навигации с количеством ожидающих
Все сайтыПоиск, фильтры по статусу, управление featured/promoted, удаление
ПользователиПоиск, фильтр по роли, смена роли через AJAX-select, бан/разбан с причиной
КатегорииРедактирование дерева категорий в реальном времени, создание/редактирование/удаление, drag-образный интерфейс с вложенностью
НастройкиНазвание сайта, описание, email, meta keywords, количество элементов на странице, режим модерации (ручная/авто), включение/отключение регистрации
АналитикаПолная страница статистики с Chart.js-графиками

REST API v1

Полноценный API с JWT-аутентификацией:

POST   /api/v1/auth/login           → Получить JWT токен POST   /api/v1/auth/refresh         → Обновить токен (auth) GET    /api/v1/me                   → Профиль текущего пользователя (auth) GET    /api/v1/sites                → Список сайтов (фильтры: category_id, tag, sort, featured; пагинация) GET    /api/v1/sites/search?q=      → Полнотекстовый поиск GET    /api/v1/sites/{slug}         → Данные сайта + теги + favicon/screenshot URLs POST   /api/v1/sites                → Создать сайт (auth) PUT    /api/v1/sites/{id}           → Обновить сайт (auth, owner/moderator) DELETE /api/v1/sites/{id}           → Удалить сайт (auth, owner/moderator) GET    /api/v1/categories           → Дерево категорий GET    /api/v1/categories/{id}      → Категория + breadcrumb + дочерние GET    /api/v1/sites/{id}/reviews   → Отзывы сайта (пагинация) POST   /api/v1/sites/{id}/reviews   → Добавить отзыв (auth) DELETE /api/v1/reviews/{id}         → Удалить отзыв (auth, owner/moderator)

Все ответы в JSON. Rate limiting 60 запросов/минуту. Стандартизированные коды ошибок.

Email-уведомления

  • Подтверждение регистрации — HTML-письмо с кнопкой верификации
  • Сброс пароля — безопасная ссылка с TTL
  • Сайт одобрен — уведомление автора с прямой ссылкой
  • Сайт отклонён — уведомление с причиной
  • Все шаблоны в glassmorphism-стиле, адаптивная верстка
  • Поддержка любого SMTP (Mailtrap, SendGrid, Mailgun, Яндекс, Gmail и др.)
  • Режим log для разработки (без отправки, запись в лог)

Безопасность

ЗащитаРеализация
XSSTwig auto-escape + htmlspecialchars везде
SQL-инъекцииPDO prepared statements, нет конкатенации в запросах
CSRFТокены на всех POST-формах, middleware-проверка, X-CSRF-TOKEN заголовок для AJAX
БрутфорсRate limiter: 60 req/min глобально, класс RateLimiter для логина
Паролиbcrypt, cost 12
Remember-meSHA-256 хеш токена в БД, httpOnly + SameSite=Lax cookie
JWTHMAC-SHA256, configurable TTL
ЗагрузкиПроверка MIME через finfo, ограничение по расширению и размеру
Путь к файламПроверка через realpath() для endpoint /storage/
Security HeadersX-Frame-Options, X-Content-Type-Options, X-XSS-Protection в .htaccess и nginx
Sensitive files.env, .sql, .log закрыты через .htaccess

Производительность и масштабирование

  • Кэш запросов — каталог, featured, popular, recent кэшируются (120–300 сек)
  • Tagged cache — инвалидация связанных ключей одной командой
  • Составные индексы — оптимизированы для всех частых выборок (status+created, status+views, status+rating)
  • FULLTEXT индексы — быстрый поиск без LIKE '%...%'
  • Lazy loading — IntersectionObserver для изображений
  • CSS animations — только GPU-ускоренные transform/opacity
  • Горизонтальное масштабирование — переключение на Redis одной переменной, общий NFS/S3 для uploads
  • Opcache — настроен в docker/php/php.ini

Дизайн и UI/UX

  • Glassmorphism — матовое стекло, blur, прозрачные карточки, свечение
  • Тёмная и светлая тема — переключение, сохранение в localStorage
  • Адаптивный дизайн — mobile-first, breakpoints 480 / 768 / 1024 px
  • Шрифты — Outfit (заголовки, 800 weight) + JetBrains Mono (код, URL)
  • Анимации — entrance анимации карточек через IntersectionObserver, hover-эффекты, микроинтеракции
  • Вид сетки/списка — переключение с сохранением выбора
  • Drag & drop загрузка — для скриншотов и аватаров
  • Звёздный рейтинг — интерактивный CSS-only hover с JS-сохранением



    Скрипт написан за 9 недель, проверен и успешно выпущен в продажу. Инструкция по установке в архиве.
Основная информация

Версия: 1
Категория: PHP
Продажи: 0
Дополнительно

Обновлено: 25.03.2026
Размер файла: 0 MB
ID товара: #90

0/5

На основе 0 отзывов

У этого товара еще нет отзывов.