1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов 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 нравится это.

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