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

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

Discussion in 'Руководства, инструкции, утилиты' started by abasov90, Aug 10, 2012.

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

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

    Trophy Points:
    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 пусть вас не удивляют. Тут мы просто напросто читаем данные с формы.

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

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

    Code:
    $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 and egor36545 like this.
  2. Хостинг MineCraft
    <

Share This Page