Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Туториал Интеграция FMXLauncher с разными CMS

Starr

Активный участник
Пользователь
Баллы
98
Имя в Minecraft
_Starr_
Здравствуйте.
В этой теме я буду выкладывать скрипты для привязки вебчасти FMXLauncher к вашему серверу.
Кидайте свои CMS, структуру их таблиц (обязательно) и метод хеширования.
Буду помогать и добавлять сюда ;)

DLE:

PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $user = array(
            'login'    => $login,
            'password' => md5(md5($password))
        );

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `name`=:login AND BINARY `password`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

    }
?>

WebMCR:

PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $user = array(
            'login'    => $login,
            'password' => md5($password)
        );

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `login`=:login AND BINARY `password`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

    }
?>

WordPress:

PHP:
<?php
    include_once('settings.php');
    include_once('class-phpass.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $wp_hasher = new PasswordHash(8, TRUE);

        $user = array(
            'login'    => $login,
            'password' => $password
        );

        $sql = $db_handle->prepare("SELECT `user_pass` FROM `{$players_table_name}` WHERE `user_login`=:login");

        if ($sql->execute(array('login' => $login))) {
            $password_hashed = $sql->fetchColumn();
            if($wp_hasher->CheckPassword($password, $password_hashed)) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

    }
?>
+ Добавить в корень со скриптами файлик из WordPress /wp_includes/class-phpass.php

PunBB:

PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $sth = $db_handle->prepare("SELECT salt FROM `{$players_table_name}` WHERE `username`=:username");

        $sth->execute(array(
            'username' => $login,
        ));

        $getsalt=$sth->fetch(PDO::FETCH_ASSOC);
        $salt = $getsalt['salt'];

        $user = array(
            'login'    => $login,
            'password' => sha1($salt.sha1($password))
        );

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `login`=:login AND BINARY `password`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

   }
?>

AuthMe:

PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $sth = $db_handle->prepare("SELECT `password` FROM `{$players_table_name}` WHERE `username`=:login");

        if ($sth->execute(array('login' => $login))) {
            $gethash=$sth->fetch(PDO::FETCH_ASSOC);
            $hash = $gethash['password'];

            $exp = preg_split('/\\$/', $hash);
            $salt = $exp[2];

            $rpass = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt);
        } else {
            return USER_NOT_EXISTS;
        }

        $user = array(
            'login'    => $login,
            'password' => $rpass
        );

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `username`=:login AND BINARY `password`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

    }
?>

VBulletin:

PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $sth = $db_handle->prepare("SELECT salt FROM `{$players_table_name}` WHERE `username`=:username");

        $sth->execute(array(
            'username' => $login,
        ));

        $getsalt=$sth->fetch(PDO::FETCH_ASSOC);
        $salt = $getsalt['salt'];

        $user = array(
            'login'    => $login,
            'password' => md5(md5($password).$salt)
        );

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `username`=:login AND BINARY `password`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

   }
?>

IP.Board:

Версия 3.x
PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $sth = $db_handle->prepare("SELECT members_pass_salt FROM `{$players_table_name}` WHERE `name`=:username");

        $sth->execute(array(
            'username' => $login,
        ));

        $getsalt=$sth->fetch(PDO::FETCH_ASSOC);
        $salt = $getsalt['members_pass_salt'];

        $user = array(
            'login'    => $login,
            'password' => md5(md5($salt).md5($password))
        );

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `name`=:login AND BINARY `members_pass_hash`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

   }
?>
Версия 4.x
PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $sth = $db_handle->prepare("SELECT members_pass_salt FROM `{$players_table_name}` WHERE `name`=:username");

        $sth->execute(array(
            'username' => $login,
        ));

        $getsalt=$sth->fetch(PDO::FETCH_ASSOC);
        $salt = $getsalt['members_pass_salt'];

        if (mb_strlen($salt) === 22) {
            $user = array(
                'login'    => $login,
                'password' => crypt($password, '$2a$13$' . $salt)
            );
        }

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `name`=:login AND BINARY `members_pass_hash`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

   }
?>

XenForo (1.1 и ниже):

PHP:
<?php
    include_once('settings.php');

    define('USER_EXISTS'    , 0);
    define('USER_NOT_EXISTS', 1);
    define('SQL_ERROR'      , 2);

    function IsPlayerInBase($db_handle, $login, $password) {

        global $players_table_name;

        $sth = $db_handle->prepare("SELECT `salt` FROM `{$players_table_name}` WHERE `login`=:login");

        $sth->execute(array(
            'login' => $login,
        ));

        $getsalt=$sth->fetch(PDO::FETCH_ASSOC);
        $salt = $getsalt['salt'];

        $rpass = hash('sha256',hash('sha256',$password).$salt);

        $user = array(
            'login'    => $login,
            'password' => $rpass
        );

        $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `login`=:login AND BINARY `password`=:password");

        if ($sql->execute($user)) {
            if ($sql->fetchColumn()) {
                return USER_EXISTS;
            } else {
                return USER_NOT_EXISTS;
            }

        } else {
            return SQL_ERROR;
        }

    }
?>

Помогайте дополнять тему, буду признателен :)
 
Последнее редактирование:
Хмм, я делаю новую веб-часть. Нашлось время.
upload_2015-8-16_1-53-53.png
 
Joomla это хорошо, еще ворд пресс бы
А че с ВП так не заладилось, ты же начинал под него делать в том куске кода...
Потом сделаю для него интеграцию. У них там геморрой связанный с хешами.
 
Joomla это хорошо, еще ворд пресс бы
А че с ВП так не заладилось, ты же начинал под него делать в том куске кода...
Там ничего сложного, просто в вебчасть добавить class-phpass.php и юзать код который у меня в шапке (переделать)
 
Когда я читал мне так не показалось :oops: В прочем я чайник в этом деле
Да реально легче. Я конечно не кодер на пыхе, это чисто субъективное мнение (простой способ но мб не самый лучший).
 
Да реально легче. Я конечно не кодер на пыхе, это чисто субъективное мнение (простой способ но мб не самый лучший).
Сейчас ты меня запутал:confused: что именно легче, то что предложил я или ты?
:D
 
Сам туплю)
Импорт мой легче))
Я знаю о чем ты думаешь:lol:
59113.jpg
 

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

Назад
Верх