Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Настройка авторизации сайта и клиента

Тема в разделе "[Архив] Помощь", создана пользователем Yaroslaman, 17 окт 2013.

Статус темы:
Закрыта.
  1. Автор темы
    Yaroslaman

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

    Баллы:
    48
    DELETE

    Сервер bukkit 1.5.2
    Сейчас столкнулся с данной проблемой, а именно авторизацией сайта с сервером через клиент.

    Вообщем при входе через клиент из БД сайта вытаскиваем переменные логина и пароля, и входим в лаунчер. Но не все так просто ведь дальше необходимо сделать вход на сам сервер, а именно проверить есть ли такой ник в БД и впустить игрока, в моем случае пишет Bad Login. Значит из БД не вытаскивает переменную логин и все остальные. При детальном поиске попал на тему где писали об авторизации, но ничего путного не нашел, т.к. настройки файлов, которые лежат на сайте , а именно checkserver.php auth.php connect.php functions.php joinserver.php попросту нет.

    Внизу выложу эти файлы + в настройке сервера при замене ссылки mojang на свою ничего не изменилось, проблема осталась. Прочитав несколько тем нашел php файлы которые проверяют авторизацию не в клиенте, а через сайт тем самым упрощают поиск ошибки, это index1.php index2.php index3.php попробовав сделать как в инструкции не вышло, на 2 и 3 заходит но на 1 пустой экран(белый).

    Путь к этим файлам
    Корневой каталог где лежат все php файлы
    http://мой_домен/site(slaviatura)/...
    БазаДанных: userName - логин
    userPass -пароль
    session - так и не разобрался
    server - так и не понял что означает

    Попрошу не давать ссылки на туториалы и иную чушь, без настройки данных фалов *.php . Если есть знающие просьба связаться в skype - yaro-man007 с удовольствием поддержу материально такого "умничку", но не нужно стучаться и писать "гАни дИньги и пАмАгу". Благодарю всех кто просмотрел тему и дал дельный совет.

    Исходники:
    auth.php
    <?php
    define('INCLUDE_CHECK',true);
    require_once 'functions.php';
    include ("connect.php");
    $login=$_POST['userName'];
    $password=$_POST['userPass'];
    $ver=$_POST['version'];

    if(getGameInfo('launcher') == $ver){

    $result = mysql_query("SELECT $db_columnPass FROM $db_table WHERE $db_columnUser='$login'") or die ("Запрос к базе завершился ошибкой."); //извлекаем из базы все данные о пользователе с введенным логином
    $myrow = mysql_fetch_array($result);

    $realPass = $myrow[$db_columnPass];

    if (checkPass($realPass,$password))
    {
    $sessid = generateSessionId();
    $gamebuild=getGameInfo('build');

    mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.");

    $dlticket = md5($login);
    echo $gamebuild.':'.$dlticket.':'.$login.':'.$sessid.':';
    }
    else {
    echo "Bad login";
    }
    }
    else{
    echo 'Old version';
    }
    ?>

    connect.php
    <?php
    if(!defined('INCLUDE_CHECK')) die("You don't have permissions to run this");
    $crypt = 'hash_dle';
    $db_host = 'host';
    $db_port = '3306';
    $db_user = 'user';
    $db_pass = 'password';
    $db_database = 'data';
    $db_table = 'userlist';
    $db_columnId = 'id';
    $db_columnUser = 'userName';
    $db_columnPass = 'userPass';
    $db_tableOther = 'xf_user_authenticate';
    $db_columnSesId = 'session';
    $db_columnServer = 'server';
    $db_columnSalt = 'members_pass_salt';

    $masterversion = 'MixGame MK6';
    $protectionKey = 'fgsoepr8y5y9w5hgsrgopsh-aghp09rhy0';


    $db_columnMoney = 'balance';

    $db_tableMoneyKeys = 'sashok724_launcher_keys';
    $db_columnKey = 'key';
    $db_columnAmount = 'amount';

    $usePersonal = true;
    $canUploadSkin = false;
    $canUploadCloak = false;
    $canBuyVip = false;
    $canBuyPremium = false;
    $canBuyUnban = false;
    $canActivateVaucher = false;
    $canExchangeMoney = false;
    $canUseJobs = true;

    $cloakPrice = 0;
    $vipPrice = 100;
    $premiumPrice = 150;
    $unbanPrice = 150;

    $initialIconMoney = 35;
    $exchangeRate = 200;

    $link = mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die(mysql_error());

    mysql_select_db($db_database,$link) or die(mysql_error());
    mysql_query("SET names UTF8");
    ?>

    functions.php
    <?php
    if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');

    function generateSessionId(){
    // generate rand num
    srand(time());
    $randNum = rand(1000000000, 2147483647).rand(1000000000, 2147483647).rand(0,9);
    return $randNum;
    }

    function getGameInfo($type){
    include ("connect.php");
    switch($type){
    case 'build':
    $query = mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'latest-game-build'") or die ("Запрос к базе завершился ошибкой.");
    $resource = mysql_fetch_array($query);
    return $resource[$db_Valuecolumn];
    break;

    case 'launcher':
    $query = mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'launcher-version'") or die ("Запрос к базе завершился ошибкой.");
    $resource = mysql_fetch_array($query);
    return $resource[$db_Valuecolumn];
    break;

    }
    }

    function checkPass($realPass,$password){
    if (strlen($realPass) == 32)
    {
    $cp = md5($password);
    }
    else {
    if(strpos($realPass,'$SHA$') !== false)
    {
    $ar = preg_split("/\\$/",$realPass);
    $salt = $ar[2];
    $cp = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt);
    }
    else
    {
    $saltPos = (strlen($password) >= strlen($realPass) ? strlen($realPass) : strlen($password));
    $salt = substr($realPass, $saltPos, 12);
    $hash = hash('whirlpool', $salt . $password);
    $cp = substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
    }
    }

    if ($realPass==$cp) {
    return true;
    }
    else {
    return false;
    }
    }
    ?>

    checkserver.php
    <?php
    define('INCLUDE_CHECK',true);
    include ("connect.php");

    $user = mysql_real_escape_string($_GET['userName']);
    $serverid = mysql_real_escape_string($_GET['serverId']);

    $result = mysql_query("Select $db_columnUser From $db_table Where $db_columnUser='$userName' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");

    if(mysql_num_rows($result) == 1){
    echo "YES";
    } else{
    echo "NO";
    }

    ?>

    joinserver.php
    <?php
    define('INCLUDE_CHECK',true);
    include ("connect.php");

    $sessionid = mysql_real_escape_string($_GET['sessionId']);
    $user = mysql_real_escape_string($_GET['user']);
    $serverid = mysql_real_escape_string($_GET['serverId']);

    $result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$user' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");

    if(mysql_num_rows($result) == 1){
    echo "OK";
    } else {

    $result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Запрос к базе завершился ощибкой.");

    if(mysql_affected_rows() == 1){
    echo "OK";
    } else {
    echo "Bad login";
    }
    }
    ?>

    index1.php
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Проверка/title>

    </head>
    <body>
    <form action="auth.php" method="post">
    <p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
    <p><br />Пароль:<br /><input type=text name=password class="field" /><br /></p>
    <p><br />Версия, ввести 13:<br /><input type=text name=version class="field" /><br /></p>
    <p><input type="submit" name="submit" value="Отправить"/><br /></p>
    </form>
    </body>
    </html>

    index2.php
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Проверка</title>

    </head>
    <body>
    <form action="joinserver.php" method="get">
    <p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
    <p><br />Сессия:<br /><input type=text name=sessionId class="field" /><br /></p>
    <p><br />Сервер:<br /><input type=text name=serverId class="field" /><br /></p>
    <p><input type="submit" name="submit" value="Отправить"/><br /></p>
    </form>
    </body>
    </html>

    index3.php
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Проверка</title>

    </head>
    <body>
    <form action="checkserver.php" method="get">
    <p><br />Логин:<br /><input type=text name=user class="field" /><br /></p>
    <p><br />Сервер:<br /><input type=text name=serverId class="field" /><br /></p>
    <p><input type="submit" name="submit" value="Отправить"/><br /></p>
    </form>
    </body>
    </html>
     
    Последнее редактирование: 20 окт 2013
    Alisher-98 нравится это.
  2. Хостинг MineCraft
    <
  3. Автор темы
    Yaroslaman

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

    Баллы:
    48
    Ап[DOUBLEPOST=1382214410,1382036772][/DOUBLEPOST]Тема Закрыта. Вопрос решен самостоятельно.
     
    Dereku нравится это.
  4. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Люблю самостоятельных людей.
    [​IMG]
     
Статус темы:
Закрыта.

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