26 посетителей на сайте. Из них:
Пользователи5
Роботы21
Список пользователей
Clouns Game Сейчас на сайте
Тимофей Носов Сейчас на сайте
Артем Власов Сейчас на сайте
Слава Сейчас на сайте
Алексей Фонтальный Сейчас на сайте
Harry Him Был(a) в сети 8 минут назад
Матвей Был(a) в сети 9 минут назад
Савелий Пономарёв Был(a) в сети 9 минут назад
Иван Богуцкий Был(a) в сети 16 минут назад
Rika Furude Был(a) в сети 22 минуты назад
unknown Был(a) в сети 23 минуты назад
metroabsolute Был(a) в сети 24 минуты назад
Артём Был(a) в сети 25 минут назад
Artem Samp Был(a) в сети 25 минут назад
Raf Был(a) в сети 25 минут назад
Максим Иванов Был(a) в сети 29 минут назад
zloidw Был(a) в сети 30 минут назад
кпва вавап Был(a) в сети 35 минут назад
Андрей Был(a) в сети 36 минут назад
Makart Был(a) в сети 36 минут назад
Pubg Mobile Был(a) в сети 42 минуты назад
Ab Antonian Был(a) в сети 43 минуты назад
Нет Имени Был(a) в сети 43 минуты назад
Stre[L]Ok Show Был(a) в сети 46 минут назад
Кирилл Позняк Был(a) в сети 48 минут назад
world_ev Был(a) в сети 49 минут назад
Алексей Захаров Был(a) в сети 55 минут назад
Макс Уваров Был(a) в сети 58 минут назад
WiseBear Был(a) в сети 59 минут назад
Влад Мазеин Был(a) в сети 1 час назад
Rustam Galimov Был(a) в сети 1 час назад
Demon Был(a) в сети 1 час назад
123 321 Был(a) в сети 1 час назад
Руслан Чумаков Был(a) в сети 1 час назад
Михаил Зиновьев Был(a) в сети 1 час назад
sliver sayz Был(a) в сети 1 час назад
Xdesh Был(a) в сети 1 час назад
BORZ Был(a) в сети 1 час назад
Кирилл Sipailo Был(a) в сети 2 часа назад
Dmitry Был(a) в сети 2 часа назад
Byxlo_22 Был(a) в сети 2 часа назад
꧁༺Turko ༻꧂ Был(a) в сети 2 часа назад
Kolya32777 Был(a) в сети 2 часа назад
ZLONIMAN Был(a) в сети 2 часа назад
wallker Был(a) в сети 2 часа назад
роман березовский Был(a) в сети 2 часа назад
Денис Стряпчий Был(a) в сети 2 часа назад
Oleg Был(a) в сети 2 часа назад
владислав воронин Был(a) в сети 2 часа назад
Dato Guliazali195 Был(a) в сети 2 часа назад
Илья Климин Был(a) в сети 2 часа назад
Сергей Опалинский Был(a) в сети 2 часа назад
максим жарёнов Был(a) в сети 2 часа назад
Ян Бочан Был(a) в сети 2 часа назад
Юрий Русакоа Был(a) в сети 2 часа назад
toryko pepe2 Был(a) в сети 2 часа назад
Танки 7 Был(a) в сети 2 часа назад
Дима Трефилов Был(a) в сети 2 часа назад
Maxim Hirde Был(a) в сети 3 часа назад
Max Severny Был(a) в сети 3 часа назад
Роман Вычужин Был(a) в сети 3 часа назад
Andrey Был(a) в сети 3 часа назад
XoxoL Был(a) в сети 3 часа назад
Тиимерлан Зиннуров Был(a) в сети 3 часа назад
Armageddon nextrp Был(a) в сети 3 часа назад
Maks Был(a) в сети 3 часа назад
243211 31251515 Был(a) в сети 3 часа назад
Владислав Семиохин Был(a) в сети 3 часа назад
Дмитрій Китаєв Был(a) в сети 3 часа назад
Константин Яковлев Был(a) в сети 3 часа назад
destroy Был(a) в сети 3 часа назад
rjkzy1218 Был(a) в сети 4 часа назад
Pro Castle Был(a) в сети 4 часа назад
SaYzer Был(a) в сети 4 часа назад
TOKSYCHNIE Был(a) в сети 4 часа назад
Артемиз Был(a) в сети 4 часа назад
Lolget Был(a) в сети 4 часа назад
BoJlwe6Huk Был(a) в сети 4 часа назад
Матвей Был(a) в сети 5 часов назад
Vadim Kurganov Был(a) в сети 5 часов назад
Ggh Yuuu Был(a) в сети 5 часов назад
vovan vovanik Был(a) в сети 5 часов назад
The420King Был(a) в сети 5 часов назад
Святослав Наконечний Был(a) в сети 5 часов назад
Даниил Бервинов Был(a) в сети 5 часов назад
Илья Был(a) в сети 5 часов назад
Илья Грачёв Был(a) в сети 6 часов назад
Рустам Был(a) в сети 6 часов назад
Никита жосан Был(a) в сети 6 часов назад
Rustam 186 Был(a) в сети 6 часов назад
Arab Был(a) в сети 6 часов назад
Leri Chalaganidze Был(a) в сети 6 часов назад
Мистер Позитивчик Был(a) в сети 6 часов назад
Sharing Был(a) в сети 6 часов назад
イロタナ リトラクタ Был(a) в сети 7 часов назад
Maksym Был(a) в сети 7 часов назад
Fluga Был(a) в сети 7 часов назад
Tony Valemont Был(a) в сети 7 часов назад
Сибирский Копатель Был(a) в сети 7 часов назад
Jinesh Dave Был(a) в сети 8 часов назад
kazinoradi kalov Был(a) в сети 8 часов назад
QZORN Был(a) в сети 8 часов назад
The I FreeZeR Был(a) в сети 8 часов назад
netGio Был(a) в сети 9 часов назад
Kira Filomoniva Был(a) в сети 9 часов назад
Николай Stapstov Был(a) в сети 10 часов назад
Владимир Зайцев Был(a) в сети 10 часов назад
moto 152 Был(a) в сети 10 часов назад
rfewreg Был(a) в сети 11 часов назад
0987654321 Был(a) в сети 11 часов назад
Oleg Был(a) в сети 12 часов назад
Hipex Pombao Был(a) в сети 12 часов назад
Иван Курчев Был(a) в сети 12 часов назад
Ислам Төлеухан Был(a) в сети 12 часов назад
Murmalov mur Был(a) в сети 12 часов назад
Free Fire Был(a) в сети 13 часов назад
Scripts Venezuela Был(a) в сети 13 часов назад
Azazel Был(a) в сети 13 часов назад
evgen5532 Был(a) в сети 13 часов назад
Francesco Winner Был(a) в сети 14 часов назад
It's easy Был(a) в сети 14 часов назад
hikkan Был(a) в сети 14 часов назад
Ильнар Сырлыбаев Был(a) в сети 15 часов назад
Влад Влад Был(a) в сети 15 часов назад
Александр Пивоваров Был(a) в сети 16 часов назад
Влад Наёмник Был(a) в сети 16 часов назад
GREENDNS Был(a) в сети 16 часов назад
Accidentally Был(a) в сети 16 часов назад
MTA SCRIPTS by YAREGSKIY Был(a) в сети 16 часов назад
Razvan Augustin Был(a) в сети 16 часов назад
Алексей Был(a) в сети 16 часов назад
Артем Коротеев Был(a) в сети 16 часов назад
by VOSTAN Был(a) в сети 17 часов назад
Space ;D Был(a) в сети 17 часов назад
Zhekic Blogger Был(a) в сети 17 часов назад
Ibrahim Nebiyev! Был(a) в сети 17 часов назад
Князь Был(a) в сети 17 часов назад
Russia Artem Был(a) в сети 18 часов назад
Список ботов
rambler (21)

Следите за нами!

Готовый сайт для SAMP проекта

Описание

Готовый сайт для SAMP-проекта, разработанный на PHP-фреймворке Laravel. Проект полностью готов к запуску и включает следующие функции: раздел новостей, авторизация в личный кабинет, восстановление пароля, система донатов, история платежей, карта сервера, смена пароля. Сложный функционал намеренно не добавлялся, чтобы облегчить процесс изучения структуры проекта и работы с ним. Все реализовано максимально просто, чтобы новички могли быстро разобраться, где что находится. База данных содержит минимальный набор информации, поскольку у каждого SAMP-проекта своя уникальная структура и функционал. Это позволяет вам легко адаптировать сайт под ваш проект. Например, в личном кабинете вы самостоятельно можете подставить необходимые данные для отображения информации об аккаунте пользователя. Сайт также включает административную панель. Для доступа к админке перейдите по адресу /admin. Если вы уже авторизованы как администратор, система перенаправит вас на главную страницу админки. В противном случае откроется страница авторизации. Важно отметить, что авторизация в личном кабинете и в административной панели — это две разные системы, которые между собой не связаны. Проект создан с упором на простоту и функциональность, что делает его отличным стартовым решением для вашего SAMP-проекта.



Структура страниц​

Публичный сайт

1. Главная страница (/)
Стандартная страница с базовой информацией о вашем проекте. Здесь размещены инструкции по началу игры, новости и контакты. Если в базе данных отсутствуют новости, блок с ними отображаться не будет — для отображения требуется как минимум одна новость.

2. Новости (/news)
Раздел, где отображаются все ваши новости. Используется пагинация: на одной странице выводится по 10 записей.

3. О нас (/company/about)
Раздел с более детальной информацией о вашем проекте.

4. Пользовательское соглашение (/company/user-agreement)
Раздел с текстом пользовательского соглашения.

5. Политика обработки персональных данных (/company/privacy-policy)
Страница, где размещена информация о политике обработки персональных данных.

Профиль игрока

1. Личный кабинет (/profile)
Страница с общей информацией об аккаунте пользователя.

2. История платежей (/profile/payment-history)
Страница с историей всех платежей пользователя, независимо от их статуса. Используется пагинация: на одной странице отображается 10 записей.

3. Карта сервера (/profile/map)
Мониторинг карты сервера. На данный момент отображаются только дома и бизнесы, а также информация о них. Функционал можно расширить в зависимости от особенностей вашего SAMP-проекта.

4. Настройки (/profile/settings)
Страница с формой для смены пароля. При успешной смене пароля пользователю отправляется уведомление на почту. Функционал также может быть доработан в зависимости от ваших требований.

Админка

1. Главная страница (/admin)
Основная информация для администратора. Сделано минималистично, функционал можно расширить при необходимости.

2. Новости (/admin/news)
Страница для управления новостями. Здесь отображаются все новости, независимо от их статуса. Реализованы кнопки для создания, редактирования и удаления новостей. Для редактирования контента используется QuillJS, что упрощает наполнение текстами. Изображения, добавленные в контент, сохраняются в базу данных в формате base64. Обложки новостей хранятся в каталоге public/storage/news_images. При редактировании или удалении новости ненужные файлы автоматически удаляются.

3. Пользователи (/admin/users)
Страница всех игроков вашего SAMP-проекта. Используется пагинация: на одной странице отображается по 10 записей. Неподтвержденные email-адреса выделяются красным цветом (подтвержденными считаются те, у которых в поле email_verified_at указана дата). На странице редактирования пользователя доступен раздел "Платежи", где выводятся все транзакции игрока, также с пагинацией (по 10 записей на странице).

4. Администраторы (/admin/admins)
Раздел для управления администраторами сайта (не игровыми). Используется пагинация: на одной странице выводится по 10 записей. По умолчанию в проекте существует супер-администратор (Super_Admin), который может создавать новых администраторов. Функционал включает создание, редактирование и удаление администраторов. Супер-админа удалить невозможно. Для разграничения прав администраторов рекомендуется использовать пакет spatie/laravel-permission, позволяющий добавлять роли (например, "модератор", "редактор").

5. Личный кабинет администратора (/admin/profile)
Простая страница с основной информацией о текущем администраторе. При необходимости функционал можно доработать.



Пароль​

Насколько мне известно, большинство SAMP-проектов используют формат MD5 для хранения паролей. Однако Laravel и его пакеты для работы с авторизацией не поддерживают MD5 из-за его уязвимости. Поэтому было принято решение написать собственную реализацию авторизации. Функционал авторизации и смены пароля полностью работает с MD5. При этом авторизация в административную панель не использует MD5 и реализована с использованием более безопасных методов. Если в вашем проекте пароли хранятся не в формате MD5, вам потребуется немного изменить логику работы с паролями, чтобы адаптировать проект. Также настоятельно рекомендую добавить двухфакторную аутентификацию, если вы используете MD5 для хранения паролей, чтобы повысить уровень безопасности.



Мои ожидания​

Исходя из структуры проекта, я предполагаю, что у вас уже настроена база данных с таблицами: users (пользователи — игроки), businesses (бизнесы), houses (дома).

Таблица users:
username — игровой ник;
password — пароль;
email — игровая почта;
p_level — уровень;
p_skin — ID скина;
p_money — игровая валюта;
p_donate — донат-счет;
email_verified_at — дата подтверждения почты;
created_at — дата создания аккаунта;
updated_at — дата последнего обновления записи (обновляется автоматически).

Таблицы houses и businesses:
name — название;
description — описание;
price — государственная стоимость;
entrance_x — координата входа по оси X;
entrance_y — координата входа по оси Y;
entrance_z — координата входа по оси Z;
user_id — ID игрока, которому принадлежит дом или бизнес.

Для карты в личном кабинете используются координаты X и Y. Если в вашей базе данных эти поля называются иначе, не забудьте внести изменения в контроллер MapController.php и файл map.blade.php.



Структура проекта​

Для работы с проектом рекомендую использовать IDE PhpStorm. Вы можете навести курсор на любой метод, нажать Ctrl, чтобы перейти к его реализации, и таким образом разобраться, где и как вызывается код.

Основные файлы и директории​

routes/web.php Здесь находятся роуты для публичной части сайта. Для каждой страницы и её логики создан отдельный роут.
routes/admin.php Этот файл содержит роуты, относящиеся к админке.

Проект построен по принципу MVC (Model-View-Controller):
Model —
 работа с базой данных.
View — представления (HTML-шаблоны).
Controller — логика, например, извлечение данных из базы и передача их в представления.

app/Models В этой папке находятся модели, которые представляют таблицы базы данных. Например, app/Models/User связана с таблицей users.
resources/views Здесь хранится вся верстка сайта, включая шаблоны административной панели. В любом шаблоне вам будут доступны две переменные: $serverName и $serverIP.
app/Http/Controllers
 Содержит контроллеры. Для каждой части логики создается отдельный контроллер. Также есть папка Admin, где находятся контроллеры, относящиеся к админке.

Middleware​

В проекте используются два Middleware:
AuthenticateUser — проверяет авторизацию пользователя. Например, чтобы открыть страницу личного кабинета, используется этот Middleware. Если пользователь не авторизован, доступ к странице будет закрыт.
AuthenticateAdmin — отвечает за авторизацию в админке. Например, для создания новости или входа в административную панель.

В роутах они называются auth.user и auth.admin.

Работа с базой данных​

database/seeders — Здесь находятся сидеры, которые используются для заполнения базы данных. Например, для разработки или тестирования можно заполнить таблицы фейковыми данными с помощью пакета fakerphp/faker.

На данный момент в проекте есть три сидера: для домов, бизнесов и создания супер-администратора. По умолчанию используется DatabaseSeeder.

Команды для работы с сидерами:
Запуск всех сидеров: php artisan db:seed.
Запуск конкретного сидера: php artisan db:seed --class=UserSeeder.

database/migrations —
 Важная часть проекта. Все манипуляции с базой данных (создание, изменение, удаление таблиц) выполняются через миграции. Миграции можно отслеживать, откатывать и проверять их статус.

Основные команды:
Создание миграции: php artisan make:migration create_users_table.
Применение миграции: php artisan migrate.
Откат миграции: php artisan migrate:rollback (можно указать, сколько миграций откатить).
Просмотр всех доступных команд: php artisan.

Фронтенд​

public/assets — В этой директории находятся стили, jаvascript-код и изображения.
resources — Файлы CSS и JS также находятся в этой папке. Если вы изменяете их, обязательно выполните сборку проекта командой: npm run build



Донат​

Платежных систем достаточно, и каждый может выбрать подходящую по своему усмотрению. Однако в данном проекте не реализован полный функционал оплаты. Есть таблица с оплатами, в админке отображается статистика, а у пользователя — история платежей, но сам процесс оплаты не предусмотрен. Я лишь подготовил основу, и вам нужно выбрать платёжную систему и подключить её самостоятельно. В вашем распоряжении будет контроллер ShopController.php, в котором есть метод processPayment. В этом методе вы получаете информацию о пользователе, который совершает донат, сумму и email. Все данные для записи в таблицу о платеже уже есть, и создается запись со статусом waiting. Все возможные статусы можно найти в файле app/Enums/PaymentStatus. После того как платеж будет обработан, вам нужно изменить статус в таблице с waiting на success или error, в зависимости от результата. Если платёж успешен, также необходимо обновить поле p_donate в таблице users.

Пример кода для изменения статуса и обновления данных пользователя:

ShopController.php:
$payment->update(['status' => 'success']);
$user->increment('p_donate', $validated['amount']);


В интернете есть множество статей о том, как подключить платёжные системы, а также существуют специализированные пакеты для Laravel, которые могут упростить этот процесс.



Что нужно для запуска проекта​

Для пользователей Linux данная инструкция не требуется, так как предполагается, что вы уже знакомы с процессом настройки.

1. Установите OpenServer или аналогичный инструмент
2. Проверьте версии установленных инструментов, используя команды:
2.1. php -v
2.2. composer -V
3. Установите Node.js. После установки убедитесь, что Node.js и npm работают корректно, выполнив команды:
3.1. node -v
3.2. npm -v

PHP:
 версия 8.2 или выше. MySQL: у меня 8.0 на момент разработки.



Первые шаги​

Скорее всего, вы скачали архив проекта, но инструкция составлена так, будто вы клонировали репозиторий с GitHub.
Рекомендую для начала использовать предоставленные данные проекта, чтобы разобраться в его работе, вместо того чтобы сразу адаптировать вашу базу данных.

1. Создание базы данных.
Создайте пустую базу данных для проекта.

2. Настройка файла .env.
В корневой директории проекта у вас должен быть файл .env. Если его нет, скопируйте файл env.example и переименуйте его, удалив .example:

3. Далее выполните команду: php artisan key:generate

4. Откройте файл .env и настройте его под свои параметры:
APP_URL — Укажите адрес сайта (локально - локальный, на хостинге - ссылка сайта).
SAMP_SERVER_NAME — Название вашего SAMP-проекта.
SAMP_SERVER_IP — IP-адрес вашего SAMP-сервера.
DB_HOST — Хост базы данных.
DB_PORT — Порт базы данных.
DB_DATABASE — Имя базы данных.
DB_USERNAME — Имя пользователя базы данных.
DB_PASSWORD — Пароль для базы данных (оставьте пустым, если не требуется).
SUPER_ADMIN_PASSWORD — Задайте сложный пароль для супер-администратора (требуется минимум 8 символов).
CONTACT_EMAIL — Почта проекта.

Найдите переменную MAIL_MAILER и укажите настройки для вашего почтового сервиса. Без этого отправка писем на почту не будет работать. Для тестирования локально я использовал mailtrap.

5. Установка зависимостей.
Установите зависимости PHP и Node.js:
5.1. composer install
5.2. npm install

6. Очистка кеша.

На всякий случай очистите все кеши:
6.1. php artisan cache:clear
6.2. php artisan route:clear
6.3. php artisan config:clear
6.4. php artisan view:clear

7. Сборка фронтенда.

Соберите проект: npm run build

8. Файловое хранилище.

Чтобы изображения, которые вы загружаете, были видны в шаблонах, используйте команду: php artisan storage:link.

9. Миграции и сидеры.

Выполните миграцию базы данных и запустите сидеры для начального заполнения: php artisan migrate:fresh --seed

10. Запуск проекта.

Для запуска проекта выполните: php artisan serve

Не пугайтесь большого количества шагов на первый взгляд — на самом деле все достаточно просто. Основные действия включают настройку файла .env и установку зависимостей. Это всего лишь первоначальная настройка. В дальнейшем для запуска проекта вам понадобится всего одна команда: php artisan serve

Если все сделано правильно, сайт будет доступен по адресу: 127.0.0.1:8000


Дополнительно:

В архиве предоставлен дамп базы данных, использовавшийся на этапе разработки.
Пароли в таблице users: 123123
Пароли в таблице admins: 12345678




Автор публикации:

WiseBear WiseBear

Скачать:

Скачать

Категория :

Скрипты сайтов / PREMIUM WEB

Дата:
Автор ресурса:

TRADARENA

Введение в скриптинг
Введение в скриптинг
12.02.2021, Статьи
Введение в скриптинг 2
Введение в скриптинг 2
24.12.2020, Клиенты MTA
Обучение LUA
Обучение LUA
24.12.2020, Статьи
Руководство по отладке - как найти ошибки в ваших скриптах
Руководство по отладке - как найти ошибки в ваших
24.12.2020, Статьи

Установка на Web хостинг возможна? или использовать vds

вдс

я и на web хостинге запускал, главное иметь доступ по shh

Наконец-то нормальный, в рамках php, проект.