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

Туториал [урок] система авторизации клиента

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем byxar, 6 ноя 2011.

  1. karolize

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

    Баллы:
    153
    Выложи под спойлер, проверю)
     
  2. kostya163

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

    Баллы:
    68
    Народ помогите пожалуйста я все сделал лаунчер работает на сервере все проверят тоже все норм, НО когда я Вставляю ссылку к новостям у меня тупо серый экран и не чего не появляется. Заранее спасибо
     
  3. maxyo

    maxyo Активный участник

    Баллы:
    63
    Имя в Minecraft:
    maxyo
    В auth.php изменена всего одна строчка (и то можно было ее не менять, а просто название функции изменить).
    define('INCLUDE_CHECK',true);
    require_once 'functions.php';
    include ("connect.php");
    $login=$_POST['user'];
    $password=$_POST['password'];
    $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 (wp_check_password($password, $realPass))
    {
    $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';
    }
    А в function.php добавил пару функций из wordpress'а.
    if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
    require_once('class-phpass.php');
    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 wp_hash_password($password) {
    global $wp_hasher;

    if ( empty($wp_hasher) ) {

    // By default, use the portable hash from phpass
    $wp_hasher = new PasswordHash(8, TRUE);
    }

    return $wp_hasher->HashPassword($password);
    }
    function wp_check_password($password, $hash, $user_id = '') {
    global $wp_hasher;

    // If the hash is still md5...
    if ( strlen($hash) <= 32 ) {
    $check = ( $hash == md5($password) );
    if ( $check && $user_id ) {
    // Rehash using new hash.
    $hash = wp_hash_password($password);
    }

    return $check;
    }

    // If the stored hash is longer than an MD5, presume the
    // new style phpass portable hash.
    if ( empty($wp_hasher) ) {

    // By default, use the portable hash from phpass
    $wp_hasher = new PasswordHash(8, TRUE);
    }

    $check = $wp_hasher->CheckPassword($password, $hash);

    return $check;
    }
    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;
    }
    }
    Знаю оставил много лишнего, но ведь главное, что работает:)
     
  4. maxyo

    maxyo Активный участник

    Баллы:
    63
    Имя в Minecraft:
    maxyo
    Ой, забыл сказать, что добавил класс phpass, он нужен для шифровки.
     
  5. kostya163

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

    Баллы:
    68
    Поможет кто нет??
    Народ помогите пожалуйста я все сделал лаунчер работает на сервере все проверят тоже все норм, НО когда я Вставляю ссылку к новостям у меня тупо серый экран и не чего не появляется. Заранее спасибо​
     
  6. maxyo

    maxyo Активный участник

    Баллы:
    63
    Имя в Minecraft:
    maxyo
    Может сайт "тяжелый"?
    Сделай отдельную страницу для лаунчера, где просто текст и никаких излишеств
     

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