• Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • AndreyMarkelov
      От AndreyMarkelov

       
      Laravel — это современный PHP-фреймворк, который позволяет быстро и эффективно создавать веб-приложения. Его мощные инструменты и простая структура делают его идеальным выбором для разработки личного кабинета для вашего SAMP сервера. В этой статье мы создадим авторизацию для личного кабинета, которая будет работать с существующей базой данных SAMP сервера.
       
      Мы настроим три страницы:
      1. Главная: / — основная страница сайта.
      2. Авторизация: /auth — форма для ввода никнейма и пароля.
      3. Личный кабинет: /profile — страница с информацией об игроке после авторизации.
       
      Для начала давайте установим Laravel и подготовим базовое окружение.
       
       
       
      Установка Laravel
      1. Убедитесь, что ваш компьютер соответствует системным требованиям Laravel: 
      PHP версии 8.2 или выше Composer (менеджер зависимостей PHP)  
      2. Скачайте Laravel с помощью Composer 
      Откройте терминал и выполните следующую команду, чтобы создать новый проект Laravel: composer create-project laravel/laravel samp 
      Здесь samp — это название папки для проекта. Вы можете указать свое. 
       
      3. Перейдите в папку проекта: cd samp
       
      4. Настройте подключение к базе данных. 
      Laravel использует файл .env для хранения конфигурации. Найдите строки, отвечающие за подключение к базе данных, и укажите данные вашей SAMP базы:
      DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=название_базы DB_USERNAME=имя_пользователя DB_PASSWORD=пароль  
      5. Запустите встроенный сервер разработки Laravel: php artisan serve
      После запуска вы увидите сообщение, что сервер работает, например, на 127.0.0.1:8000. Перейдите по этой ссылке в браузере.
       
       
       
      Настройка роутов
      Откройте файл routes/web.php, который отвечает за определение роутов вашего сайта. Добавим туда наши роуты:
      <?php use Illuminate\Support\Facades\Route; // Главная страница Route::get('/', function () {     return view('welcome'); // Страница для главной }); // Страница авторизации Route::get('/auth', function () {     return view('auth'); // Отдельный шаблон для авторизации }); // Личный кабинет Route::get('/profile', function () {     return view('profile'); // Страница для личного кабинета });  
      Для каждого роута нам понадобятся базовые HTML-шаблоны. Создадим их в папке resources/views:
      1. Главная страница. Создайте файл resources/views/welcome.blade.php:
      <!DOCTYPE html> <html lang="ru"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Главная</title> </head> <body>     <h1>Добро пожаловать на ваш сайт!</h1>     <a href="/auth">Войти</a> </body> </html>  
      2. Страница авторизации. Создайте файл resources/views/auth.blade.php:
      <!DOCTYPE html> <html lang="ru"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Авторизация</title> </head> <body>     <h1>Вход в личный кабинет</h1>     <form action="/auth" method="POST">         @csrf         <label for="nickname">Ник:</label>         <input type="text" id="nickname"  data-cke-saved-name="nickname" name="nickname" required>         <br>         <label for="password">Пароль:</label>         <input type="password" id="password"  data-cke-saved-name="password" name="password" required>         <br>         <button type="submit">Войти</button>     </form> </body> </html>  
      3. Личный кабинет. Создайте файл resources/views/profile.blade.php:
      <!DOCTYPE html> <html lang="ru"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Личный кабинет</title> </head> <body>     <h1>Добро пожаловать в личный кабинет!</h1>     <p>Здесь будет отображаться информация о вашем аккаунте.</p>     <a href="/">Вернуться на главную</a> </body> </html>  
      Тестирование роутов. Теперь вы можете проверить роуты в браузере:
      Перейдите на 127.0.0.1:8000 — главная страница. Нажмите "Войти" и перейдите на 127.0.0.1:8000/auth — страница авторизации. Для /profile пока просто введите 127.0.0.1:8000/profile в адресной строке. Позже мы защитим эту страницу.  
       
      Миграции
      Миграции в Laravel позволяют выполнять определённые действия с базой данных, такие как создание таблиц, добавление, изменение или удаление колонок. Все манипуляции с базой данных происходят через миграции, что делает процесс удобным и структурированным.
       
      Вот несколько основных команд для работы с миграциями:
      Создание таблицы: php artisan make:migration create_news_table
      Проверка статуса миграций: php artisan migrate:status
      Откат последней миграции: php artisan migrate:rollback
       
      Откройте файл database/migrations/create_users_table.php. Если такого файла нет, создайте его с помощью команды в терминале: php artisan make:migration create_users_table
       
      Откройте файл и добавьте следующую структуру таблицы в метод up:
      Schema::create('users', function (Blueprint $table) {     $table->id(); // Автоматический ID     $table->string('nickname')->unique(); // Уникальный никнейм пользователя     $table->string('email')->unique(); // Уникальный email     $table->timestamp('email_verified_at')->nullable(); // Подтверждения email     $table->unsignedBigInteger('player_money')->default(0); // Деньги пользователя     $table->unsignedBigInteger('player_donate')->default(0); // Донат пользователя     $table->unsignedInteger('player_skin')->default(0); // ID скина     $table->string('password'); // Пароль     $table->rememberToken(); // Токен для "запомнить меня"     $table->timestamps(); // created_at и updated_at });  
      После того как вы добавили необходимые поля в файл миграции, выполните следующую команду: php artisan migrate.
       
      По завершении выполнения команды таблица будет создана. Вы можете открыть phpMyAdmin или любой другой инструмент для работы с базой данных и убедиться, что таблица появилась с нужными полями.
       
       
      Настройка модели
      Если у вас таблица называется accounts, то в Laravel рекомендуется создать модель с именем Account, чтобы придерживаться стандартов. Laravel автоматически связывает название модели во множественном числе с таблицей, если это возможно. Например:
      Модель Account по умолчанию будет связана с таблицей accounts.  Модель Player будет связана с таблицей players. Если ваше название модели совпадает с названием таблицы (во множественном числе), дополнительных настроек не требуется. Однако, если название отличается, нужно будет явно указать таблицу в модели: protected $table = 'my_users'; 
       
      Если ваша таблица называется accounts — создайте модель Account: php artisan make:model Account 
      Если ваша таблица называется users — откройте файл app/Models/User.php и добавьте все поля в $fillable, которые будут использоваться на сайте:
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable {     use HasFactory, Notifiable;     // Поля, которые будут использоваться на сайте.     protected $fillable = [         'nickname',         'email',         'player_money',         'player_donate',         'player_skin',         'password',     ];     // Поля, которые скрываются при сериализации модели.     protected $hidden = [         'password',     ]; }  
       
       
      Реализация логики авторизации
      1. Создание контроллера. Создадим контроллер для обработки роутов авторизации и личного кабинета. Назовём его AuthController: php artisan make:controller AuthController 
       
      2. Реализация методов в контроллере. Откройте файл app/Http/Controllers/AuthController.php и реализуйте методы:
       
      Отображение формы авторизации:
      public function showLoginForm() {     return view('auth'); }  
      Обработка авторизации:
      public function login(Request $request) {     // Валидируем данные     $request->validate([         'nickname' => 'required|string',         'password' => 'required|string',     ]);     // Получаем никнейм и пароль     $nickname = $request->input('nickname');     $password = $request->input('password');     // Хэшируем пароль в MD5     $hashedPassword = md5($password);     // Проверяем пользователя в базе данных     $user = User::where('nickname', $nickname)                 ->where('password', $hashedPassword)                 ->first();     if ($user) {         // Сохраняем пользователя в сессии         $request->session()->put('user', $user);         // Редирект в личный кабинет         return redirect()->route('profile');     }     // Возвращаем обратно с ошибкой     return back()->withErrors(['message' => 'Неверный никнейм или пароль']); }  
      Если в вашей базе данных пароли хранятся в формате bcrypt:
      public function login(Request $request) {     // Валидируем данные     $request->validate([         'nickname' => 'required|string',         'password' => 'required|string',     ]);     // Получаем никнейм и пароль     $nickname = $request->input('nickname');     $password = $request->input('password');     // Проверяем пользователя в базе данных     $user = User::where('nickname', $nickname)->first();     if ($user && Hash::check($password, $user->password)) {         // Сохраняем пользователя в сессии         $request->session()->put('user', $user);         // Редирект в личный кабинет         return redirect()->route('profile');     }     // Возвращаем обратно с ошибкой     return back()->withErrors(['message' => 'Неверный никнейм или пароль']); }  
      Личный кабинет:
      public function profile(Request $request) {     // Проверяем, авторизован ли пользователь     $user = $request->session()->get('user');     if (!$user) {         return redirect()->route('auth.form')->withErrors(['message' => 'Сначала войдите в систему']);     }     return view('profile', ['user' => $user]); }  
      Выход из аккаунта:
      public function logout(Request $request) {     // Удаляем данные из сессии     $request->session()->forget('user');     return redirect('/'); }  
      AuthController.php:
       
      3. Настройка роутов. Обновим routes/web.php, чтобы все роуты ссылались на методы контроллера:
      <?php use App\Http\Controllers\AuthController; use Illuminate\Support\Facades\Route; // Главная страница Route::get('/', function () {     return view('welcome'); }); // Авторизация Route::get('/auth', [AuthController::class, 'showLoginForm'])->name('auth.form'); Route::post('/auth', [AuthController::class, 'login'])->name('auth.login'); // Личный кабинет Route::get('/profile', [AuthController::class, 'profile'])->name('profile'); // Выход Route::get('/logout', [AuthController::class, 'logout'])->name('auth.logout');  
       
       
      Обновление шаблонов
      Чтобы пользователи видели сообщения об ошибках, добавим их в шаблон авторизации resources/views/auth.blade.php:
      <!DOCTYPE html> <html lang="ru"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Авторизация</title> </head> <body>     @if ($errors->any())         <div style="color: red;">             @foreach ($errors->all() as $error)                 <p>{{ $error }}</p>             @endforeach         </div>     @endif     <h1>Вход в личный кабинет</h1>     <form action="/auth" method="POST">         @csrf         <label for="nickname">Ник:</label>         <input type="text" id="nickname"  data-cke-saved-name="nickname" name="nickname" required>         <br>         <label for="password">Пароль:</label>         <input type="password" id="password"  data-cke-saved-name="password" name="password" required>         <br>         <button type="submit">Войти</button>     </form> </body> </html>  
      Отображение данных пользователя в личном кабинете. В файле resources/views/profile.blade.php выведем данные из базы:
      <!DOCTYPE html> <html lang="ru"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Личный кабинет</title> </head> <body>     <h1>Добро пожаловать, {{ $user->nickname }}!</h1>     <p>Ваш email: {{ $user->email }}</p>     <p>Игровой баланс: {{ $user->player_money }}</p>     <p>ID скина: {{ $user->player_skin }}</p>     <p>Донат счет: {{ $user->player_donate }}</p>     <a href="/">Вернуться на главную</a> </body> </html>  
      Скриншот:
       
       
      Дополнительно про Blade:
       
      В принципе, это базовая и максимально простая настройка авторизации. Вам остается только добавить собственную вёрстку. Также рекомендую использовать Middleware для защиты роутов, например, роута личного кабинета. Надеюсь, у вас всё получилось! Желаю успешной и продуктивной разработки ваших проектов!
       
      Готовый сайт для SAMP проекта: https://pawno-rus.ru/topic/8225-gotovyy-sayt-dlya-samp-proekta/
       
       
       
    • Andrey_Markelov
      От Andrey_Markelov

       
      Описание проекта
      Готовая регистрация UCP. Регистрация и авторизация как в личный кабинет пользователя, так и в административную панель. В административной панели администратор может подтвердить или отменить регистрацию. Также имеется возможность редактировать данные пользователя. Поле «Сообщение» является необязательным, но если необходимо что-то отметить, можно оставить сообщение, которое будет отображено в письме пользователя. Проект включает только регистрацию с авторизацией, без дополнительного функционала, такого как донат или новости. Также присутствует минимальная верстка от Bootstrap. Этот проект является базой для вашего сайта.
       
      Требования для запуска
      PHP версии 8.2+ Composer Node.js (npm) MySQL версии 8.0  
      Инструкция по запуску
      1. Скачивание проекта:
      Скачайте архив с проектом и распакуйте его. 2. Создание базы данных:
      Создайте пустую базу данных в MySQL. 3. Настройка .env
      В корне проекта должен находиться файл .env. Если его нет, скопируйте файл env.example и переименуйте его в .env. 4. Генерация ключа приложения:
      В терминале выполните команду: php artisan key:generate 5. Настройка .env файла:
      Откройте файл .env и укажите свои настройки:
       
      Данные проекта:
      SAMP_SERVER_NAME="Samp Role Play" SAMP_SERVER_IP=127.0.0.1:7777  
      Подключение к базе данных:
      DB_HOST=localhost DB_PORT=3306 DB_DATABASE=samp-ucp DB_USERNAME=root DB_PASSWORD=  
      Суперадмин и контактная почта:
      SUPER_ADMIN_NAME="Super_Admin" SUPER_ADMIN_PASSWORD=6Hm2Q74JW3vXnYE4rWEy7JrC CONTACT_EMAIL=support@samp-rp.ru  
      Настройка почтового клиента:
      MAIL_MAILER=smtp MAIL_HOST=sandbox.smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=dd754ec54ff399 MAIL_PASSWORD=1b87f0d6cf1841 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="hello@example.com"  
      6. Установка зависимостей:
      Установите зависимости с помощью следующих команд:
      composer install npm install  
      7. Очистка кеша:
      Выполните команды для очистки кеша:
      php artisan cache:clear php artisan route:clear php artisan config:clear php artisan view:clear  
      8. Сборка проекта:
      Соберите проект с помощью команды:
      npm run build  
      9. Добавление пользовательских полей (опционально):
      Если необходимо добавить новые поля в таблицу пользователей, откройте файл миграции: database/migrations/0001_01_01_000000_create_users_table.php.
      Например, чтобы добавить поле "донат" после email, добавьте строку:
      $table->integer('donate')->default(0); Объяснение: integer — тип данных, default(0) — значение по умолчанию.
       
      Затем откройте файл app/Models/User.php и добавьте новое поле в массив $fillable:
      protected $fillable = [     'name',         // Никнейм пользователя     'birth_date',   // Дата рождения     'gender',       // Пол     'skin',         // ИД скина     'email',        // Адрес электронной почты     'donate',       // Донат     'password',     // Пароль     'status',       // Статус пользователя ];  
      10. Миграция и сидеры:
      Выполните миграцию и примените сидеры (сидер создаёт суперадмина, без которого вход в админку невозможен):
      php artisan migrate:fresh --seed  
      11. Запуск проекта:
      Для запуска локального сервера выполните команду:
      php artisan serve  
      Дополнительная информация
      Более подробную информацию о структуре проекта и настройке вы можете найти по ссылке: > Готовый сайт для SAMP проекта <
       
      Скачать: samp-ucp.zip
      Скриншоты:
       
    • INewBRO
      От INewBRO
      Хотел записать в базу данные об игроке (пароль, ник и т.д) Но происходит ошибка и оно не записывается. Я написал чтобы ошибки сохранялись в файл. Комментарием отметил где ошибка
      Лог: