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

Туториал Авторизация на сайте сервера (личный кабинет) используя игровые данные AuthMe плагина

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем abasov90, 10 авг 2012.

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

    abasov90 Активный участник

    Баллы:
    68
    Имя в Minecraft:
    abasov90
    Если вы хотите, что бы игроки с вашего сервера к примеру могли зайти в свой кабинет на сайте используя игровые данные можно проделать следующее.
    Сложность урока: программист, продвинутый пользователь.
    Используется:
    - Плагин AuthMe который настроен на работу с mysql
    - php скрипт авторизации, который использует удаленную базу сервера. То есть ваш сервер должен иметь мускул базу данных, доступную извне.

    --------------------------------------------------------------------------------------------------
    Настройка плагина config.yml

    DataSource:
    mySQLColumnName: username
    mySQLTablename: authme
    mySQLUsername: имя пользователя базы
    backend: mysql
    mySQLColumnLastLogin: lastlogin
    mySQLDatabase: база
    mySQLPort: '3306'
    mySQLColumnIp: ip
    mySQLHost: хост базы
    mySQLColumnPassword: password
    mySQLPassword: 'пароль базы'
    caching: true
    ----------------------------------------------------------------------------------------------------



    Теперь перейдем к php. У меня codeigniter стоял так что $this->input->post пусть вас не удивляют. Тут мы просто напросто читаем данные с формы.

    Код:
    $login = trim($this->input->post('login'));
    $password  = trim($this->input->post('password'));
    Получили логин и пароль, проверяем их через базу. Получаем пароль пользователя в соответствии с логином.

    Код:
    $query = $this->db->query('SELECT password FROM authme where username = "'.mysql_real_escape_string($login).'"');
    
    далее дело техники, справочник по функциям вам в помощь.

    Код:
    $row = $query->row(); 
     
    $sha_info = explode("$",$row->password);
    if( $sha_info[1] === "SHA" )
                    {
                        $salt = $sha_info[2];
                        $sha256_password = hash('sha256', $password);
                        $sha256_password .= $sha_info[2];
                        if( strcasecmp(trim($sha_info[3]),hash('sha256', $sha256_password) ) == 0 )
                        {
                            $this->session->set_userdata('login', $login);         
                            // тут успех
                        }
                            else
                        {
                           //тут пароли не совпали
                        }
                    }
    
    если кто не понял что тут произошло.
    Пароль в бд бывает вида
    $SHA$b05545507c173b7$73348098de7ghgh456e88a22f04e2608a2b5hghfgfg4f3fc676daa2fa1b48

    sha-salt-passhash

    explode разбивает на три части пароль из базы, колдуем и затем strcasecmp сравниваем две строки.

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

    Если кому нужна разработка, пишите договоримся.
     
    slavik123123123 и egor36545 нравится это.
  2. Хостинг MineCraft
    <

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