Хостинг серверов Minecraft playvds.com
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал Авторизация/Регистрация на сайте и в игре (AuthMe+PHP+MySQL)

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем _Resta_, 6 июл 2018.

  1. Автор темы
    _Resta_

    _Resta_ Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Tankonyako
    Доброго времени суток! Вчера решил напилить скрипт для авторизации и регистрации игроков через сайт и игру(AuthMe+PHP+MySQL). Ниже вы найдете подробную информацию о подключении.

    Так же вам нужно будет настроить AuthMe под MySQL, это делается в конфигах. После настройки включите сервер, и AuthME создаст автоматически табличку с пользователями.

    Так как делал я все у себя на домашнем компе под виндой, поэтому для вебсервера я взял XAMPP, есстествено все будет работать и на Apache.

    Так вот, по поводу авторизации и регистрации, здесь я разложу весь материал понятный каждому, php код я расписывать не буду, это просто готовое решения дял ваших проектов.

    Вот этот кусок кода - это минимальное что можно сделать. Пару функции, и все.
    Так-же есть и на pastebin
    PHP:

    // Пример авторизаций через AuthMe на сайте

    $mysql = array( // Настройка базы ===============

        
    "HOST" => "localhost",
        
    "USER" => "root",
        
    "PASS" => "",
        
    "BASE" => "authme",
        
    "TABL" => "authme"

    ); // ===========================================

    $con mysqli_connect($mysql['HOST'], $mysql['USER'], $mysql['PASS'], $mysql['BASE']);

    if (
    mysqli_connect_errno()) {
        die(
    "Failed to connect to MySQL: " mysqli_connect_error());
    }

    function 
    createSalt() {
        return 
    substr(md5(uniqid(rand(), TRUE)), 03); 
    }

    function 
    testAccountExists($name) {
        global 
    $con$mysql;

        
    $query mysqli_query($con'SELECT `id` FROM `'.$mysql['TABL'].'` where `username` = "'.mysqli_real_escape_string($con$name).'"');
        
    $rowcount=mysqli_num_rows($query);
        if (
    $rowcount == || $rowcount || $rowcount) {
            return 
    false;
        }else{
            return 
    true;
        }
    }

    function 
    checkAccountPassword($name$password) {
        global 
    $con$mysql;

        if (
    testAccountExists($name) == false) { return false; }

        
    $query mysqli_query($con'SELECT `password` FROM `'.$mysql['TABL'].'` where `username` = "'.mysqli_real_escape_string($con$name).'"');

        while (
    $row mysqli_fetch_row($query))
        {
            
    $sha_info explode('$'$row[0]);
            if( 
    $sha_info[1] === "SHA" ) {
                
    $salt $sha_info[0];
                
    $sha256_password hash('sha256'$password);
                
    $sha256_password .= $sha_info[2];
                if( 
    strcasecmp(trim($sha_info[3]),hash('sha256'$sha256_password) ) == ){
                    return 
    true;
                } else {
                    return 
    false;
                }
            }
        }
    }

    function 
    createHash($password) {
        
    $salt createSalt();

        return 
    '$SHA$' $salt '$' hash('sha256'hash('sha256'$password) . $salt);
    }

    function 
    registerAccount($name$password$regtime$regip) {
        global 
    $con$mysql;

        if (
    testAccountExists($name) == true) { return false; }

        
    $sql 'INSERT INTO `'.$mysql['TABL'].'`(`username`, `realname`, `password`, `ip`, `lastlogin`, `regdate`, `regip`) VALUES ("'.mysqli_real_escape_string($con$name).'", "'.mysqli_real_escape_string($constrtolower($name)).'", "'.createHash($password).'", "'.$regip.'", "'.$regtime.'", "'.$regtime.'", "'.$regip.'")';
       
        if (
    mysqli_query($con$sql)) {
            return 
    true;
        } else {
            return 
    false;
        }
    }

    А, вот тут я приложу код-пример для понятности как использовать этот комбайн.
    PHP:
    if (!empty($_POST['login']) && !empty($_POST['password'])) {
        if (
    checkAccountPassword($_POST['login'], $_POST['password']) == true) {
            echo 
    "<div class='alert'>".$_POST['login'].", вы успешно вошли в аккаунт!</div>";
        } else {
            echo 
    "<div class='alert'>Неверный логин или пароль!</div>";
        }
    }
    PHP:
    if (!empty($_POST['login']) && !empty($_POST['password']) && !empty($_POST['password2'])) {
        if (
    $_POST['password'] == $_POST['password2']) {

            
    // Тут нет проверки на валидность ника, и пароля (preg_match)
            
    if (registerAccount($_POST['login'], $_POST['password'], time(), $_SERVER['REMOTE_ADDR']) == true) {
                echo 
    "<div class='alert'>Успешно!</div>";
            } else {
                echo 
    "<div class='alert'>Данный аккаунт уже существует!</div>";
            }
        } else {
            echo 
    "<div class='alert'>Пароли не совпадают!</div>";
        }
    }
    Тут есть полный пример: pastebin

    Спасибо за внимание.

     
  2. Mr Hosting
  3. Автор темы
    _Resta_

    _Resta_ Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Tankonyako
    Спасибо данному человеку VK за перевод туториала на SpigotMC
     
  4. InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Нет, ну способ интересный конечно, но что здесь вообще нужно дыло переводить, если всё состоит из php кода?
     

Поделиться этой страницей