Войти или зарегистрироваться

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

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 сравниваем две строки.

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

Если кому нужна разработка, пишите договоримся.
 
Назад
Верх