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 пусть вас не удивляют. Тут мы просто напросто читаем данные с формы.
Получили логин и пароль, проверяем их через базу. Получаем пароль пользователя в соответствии с логином.
далее дело техники, справочник по функциям вам в помощь.
если кто не понял что тут произошло.
Пароль в бд бывает вида
$SHA$b05545507c173b7$73348098de7ghgh456e88a22f04e2608a2b5hghfgfg4f3fc676daa2fa1b48
sha-salt-passhash
explode разбивает на три части пароль из базы, колдуем и затем strcasecmp сравниваем две строки.
Вот и вся логика. Пример можно увидеть у меня на сайте, но ссылку не кину так как с правилами сайта не знаком. Возможно сочтут за рекламу.
Если кому нужна разработка, пишите договоримся.
Сложность урока: программист, продвинутый пользователь.
Используется:
- Плагин 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 сравниваем две строки.
Вот и вся логика. Пример можно увидеть у меня на сайте, но ссылку не кину так как с правилами сайта не знаком. Возможно сочтут за рекламу.
Если кому нужна разработка, пишите договоримся.