1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Starr, 15 авг 2015.

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

    Starr Активный участник Пользователь

    Баллы:
    98
    Здравствуйте.
    В этой теме я буду выкладывать скрипты для привязки вебчасти 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(8TRUE);

            
    $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;
            }

        }
    ?>

    Помогайте дополнять тему, буду признателен :)
     
    Последнее редактирование: 23 фев 2016
  2. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
  3. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Хмм, я делаю новую веб-часть. Нашлось время.
    upload_2015-8-16_1-53-53.png
     
  4. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    Как я вижу в отдельном скрипте будет настроена авторизация под несколько cms?
     
  5. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Да, уже есть.
    authme
    dle
    webmcr
    punbb
    xenforo
    ipb
    vbulletin
    joomla
     
  6. Автор темы
    Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Ну вот, только создаешь тему, а тут уже за тебя все делают.. :(
    Но это хорошо, наконец у тебя время нашлось!
     
  7. MrTrojan

    MrTrojan Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    BlackTrojan
    что за среда разработки на php?
     
  8. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    upload_2015-8-16_2-44-29.png
     
  9. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    Joomla это хорошо, еще ворд пресс бы
    А че с ВП так не заладилось, ты же начинал под него делать в том куске кода...
     
  10. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Потом сделаю для него интеграцию. У них там геморрой связанный с хешами.
     
  11. Автор темы
    Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Там ничего сложного, просто в вебчасть добавить class-phpass.php и юзать код который у меня в шапке (переделать)
     
  12. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
  13. Автор темы
    Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Там много депендов и придется переносить очень много кода. Легче заюзать импорт.
     
  14. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    Когда я читал мне так не показалось :oops: В прочем я чайник в этом деле
     
  15. Автор темы
    Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Да реально легче. Я конечно не кодер на пыхе, это чисто субъективное мнение (простой способ но мб не самый лучший).
     
  16. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    Сейчас ты меня запутал:confused: что именно легче, то что предложил я или ты?
    :D
     
  17. Автор темы
    Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Сам туплю)
    Импорт мой легче))
     
  18. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    Я знаю о чем ты думаешь:lol:
    [​IMG]
     
  19. Автор темы
    Starr

    Starr Активный участник Пользователь

    Баллы:
    98
    Завтра закажу :D
     
  20. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    Ахаха
     

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