Авторизация в Ghtweb(5.1.3)

Martali

Путник
Пользователь
Сообщения
22
Розыгрыши
0
Репутация
0
Реакции
1
Баллы
75
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
jts 2018
Доброго времени суток.
Не могу разобраться, как работает связь обвязки Ghtweb 5.1.3 (взята с Github'a) и ява-сборки jts 2018 года. Сам логин и игровой сервер запущены и работают.
Развернул и настроил Ghtweb 5, отображает онлайн сервера, список игроков, топ ПВП/ПК.
Проблема с созданием аккаунта на сайте. После успешной регистрации, учётные данные принимаются сайтом. Стоит зайти на логин сервер, даже до выбора сервера, в ЛК на сайт уже не попасть.
Опытным путём и чтением результатов запроса в Гугл, причиной считаю разную генерацию хэшей БД сайта и логин сервера.
При авторизации на сайте хэш имеет такой вид: faf200037c7b4290662d57f0ee59a450 (поле hash_auth), на логин сервере — fEqNCco3Yq9h5ZUglD3CZJT4lBs=(поле password). После авторизации на логин сервере значение поле password становится вида — sha1:1000:BKUtFOSowxjReuJ2InqAesCMSOOmUo3q:RckmG3A/AGEG3TODiYTgsCWjz6+/UqyW и зайти в ЛК на сайте больше нельзя.
В настройках логин-сервера на ghtweb стоит тип шифрования sha1, в конфиге логин сервера, так же стоит sha1. Менял настройки на whirpool и в ght и в логин сервере. Поведение не поменялось, только в указанных выше полях поначалу меняется вид строки хэша.
Кто сталкивался с подобным, прошу подсказать, как исправить или куда копать?
Прикрепляю файл LoginForm, так как там в коде встречается passwordEncrypt


PHP:
 // Аккаунт на сервере найден
                if ($account) {
                    if ($account['password'] == $l2->passwordEncrypt($this->getPassword())) {
                        // Аккаунта на сайте нет, создаю его так как на сервере он уже есть
                        if (!$siteAccount) {
                            $email = null;

                            $columnNames = $l2->getDb()
                                ->getSchema()
                                ->getTable('accounts')
                                ->getColumnNames();

                            if (is_array($columnNames)) {
                                foreach ($columnNames as $column) {
                                    if (strpos($column, 'mail') !== false && isset($account[$column])) {
                                        $email = $account[$column];
                                    }
                                }
                            }

                            // В таблице с аккаунтами нет поля с Email. Нет смысла регать дальше аккаунт на сайте
                            if (!$email) {
                                throw new Exception('Аккаунт не найден');
                            }

                            // Создаю аккаунт на сайте
                            $userModel = Users::create($login, $email, Users::STATUS_ACTIVATED, $lsId, Users::ROLE_DEFAULT);
                            $userModel->save(false);

                            $siteAccountUserId = $userModel->user_id;
                        }

                        $found = true;
                    }
                }

                // Аккаунт не найден
                if (!$found) {
                    if ($siteAccountUserId) {
                        UsersAuthLogs::model()->addErrorAuth($siteAccountUserId);
                    }

                    $this->incrementBadAttempt();
                    $this->addError($attr, 'Неправильный Логин или Пароль.');
                }
            } catch (Exception $e) {
                $this->addError('login', $e->getMessage());
            }
        }
 

Вложения

  • LoginForm.zip
    2,4 КБ · Просмотры: 2
Martali, отладить можно с помощью PHPStorm. Ставите на свой ПК Apache, PHP + xDebug и MySQL или какой-нибудь Denwer и к нему xDebug (если его там нет), создаёте базу данных для движка в MySQL под ghtweb, создаёте хост для движка ghtweb, заливаете файлы движка, настраиваете чтобы у вас сайт работал локально. Потом нужно настроить xDebug: ключи отладки, порты и т.д. После чего открываете PHPStorm (нужно будет тоже настроить под настройки вашего xDebug), загружаете папку с проектом (сайтом) и можно попробовать отладить. Изначально, предлагаю создать отдельный хост с одним index.php для настройки и проверки xDebug, чтобы не запутаться в большом проекте. По мне так для вас это будет сложно всё настроить, но можете попробовать, но с другой стороны с отладкой будет видно где какие данные и можно будет дописать логику даже с минимальным пониманием PHP. Можете поискать готовые образы с уже настроенными веб-серверами для отладки, может это ускорит процесс.

Попробуйте вставить мой код в
PHP:
public function passwordEncrypt($password)
{
    if ($this->config('password_type') == Ls::PASSWORD_TYPE_WHIRLPOOL) {
        return base64_encode(hash('whirlpool', $password, true));
    } else if ($this->config('password_type') == Ls::PASSWORD_TYPE_PBKDF2WITHHMACSHA1) {
        $algorithm = "sha1";
        $iterations = 1000;
        $salt = random_bytes(24);
        $hash = hash_pbkdf2($algorithm, $password, $salt, $iterations, 24, true);
        return $algorithm . ":" . $iterations . ":" . base64_encode($salt) . ":" . base64_encode($hash);
    }

    return base64_encode(pack('H*', sha1(utf8_encode($password))));
}
 

Проверь разницу)
Создай два акаунта с одинаковым паролем.
Один не трогай, под вторым зайди в игру.
Я так понял они будут разными, значит сайт все так же не правильно генерирует :(
 
ElectroMyStyle, закомментировал аналогичный блок от Mex-Vision, и вставил ваш код, не заходит в ЛК сайта всё равно.
Да, уже на третьем предложении описания настройки отладки загрустил. Посмотрю, какие шаблоны готовых контейнеров есть в Proxmox'e.

Desquire, в БД сайта таблицы users нет поля password, только auth_hash. Он каждый раз меняется при входе, хотя пароль не изменен. На вид это sha1. Если в настройках сайта сменить на whirpool, будет другой внешний вид хэша. Но тогда не зайти в ЛС, без смены типа хэша там в файле Authserver.json.
Приложил скрины как это выглядит в БД.
 
Martali, То что на сайте нет пароля это нормально, пароль берётся из игры например, при авторизации начиная с 101 строки идёт логика поиска аккаунта по логину в БД игры, а уже на 113 строке идёт поиск аккаунта в БД сайта. Auth_hash служит лишь для Cookie скорее всего и проверки сайтом, что юзер авторизован.

А подскажите, при регистрации аккаунта на сайте, в БД сервера игры у аккаунта пароль какой сохраняется: sha1 или из 4 параметров? Если установить тип авторизации - Ls::pASSWORD_TYPE_PBKDF2WITHHMACSHA1 как было предложено в предыдущих постах

Измените временно немного логику и добавьте вывод данных в 121 строку
PHP:
$acc_password = $account['password'];
$cur_password = $this->getPassword();
var_dump($acc_password);
var_dump($cur_password);
if ($acc_password == $l2->passwordEncrypt($cur_password)) {
// ... далее код не трогайте
При попытке авторизации должен быть вывод данных паролей на самой странице авторизации (скорее всего где-то вверху), скиньте сюда скрин или сами данные, чтобы понимать, что получает и сравнивает скрипт в форме авторизации.
 
ElectroMyStyle, я проводил неправильные тесты. В настройках сайта не менял тип авторизации. После вашего последнего сообщения попробовал сделать это и получил ошибку. Похоже, на не соответствии типов. Колонку password_type мне не удалось найти, чтобы увеличить количество символов.
Тестировал и с кодом Mex-Vision и с вашим вариантом. Текст ошибки одинаковый.
Не уверен, что получится безболезненно поменять тип авторизации на сайте. Ведь, когда я менял на whirpool, мне приходилось менять тип авторизации и на сервере, и перезапускать его.

PHP:
array
(
    'code' => 500
    'type' => 'CDbException'
    'errorCode' => 22001
    'message' => 'CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column \'password_type\' at row 1'
    'file' => '/usr/share/nginx/html/ghtweb5/framework/db/CDbCommand.php'
    'line' => 358
    'trace' => '#0 /usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php(1756): CDbCommand->execute()
#1 /usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php(1130): CActiveRecord->updateByPk()
#2 /usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php(811): CActiveRecord->update()
#3 /usr/share/nginx/html/ghtweb5/protected/modules/backend/controllers/LoginServersController.php(33): CActiveRecord->save()
#4 [internal function]: LoginServersController->actionForm()
#5 /usr/share/nginx/html/ghtweb5/framework/web/actions/CAction.php(109): ReflectionMethod->invokeArgs()
#6 /usr/share/nginx/html/ghtweb5/framework/web/actions/CInlineAction.php(47): CAction->runWithParamsInternal()
#7 /usr/share/nginx/html/ghtweb5/framework/web/CController.php(308): CInlineAction->runWithParams()
#8 /usr/share/nginx/html/ghtweb5/framework/web/CController.php(286): CController->runAction()
#9 /usr/share/nginx/html/ghtweb5/framework/web/CController.php(265): CController->runActionWithFilters()
#10 /usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php(282): CController->run()
#11 /usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php(141): CWebApplication->runController()
#12 /usr/share/nginx/html/ghtweb5/framework/base/CApplication.php(185): CWebApplication->processRequest()
#13 /usr/share/nginx/html/ghtweb5/public/index.php(51): CApplication->run()
#14 {main}'
    'traces' => array
    (
        0 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php'
            'line' => 1756
            'function' => 'execute'
            'class' => 'CDbCommand'
            'type' => '->'
        )
        1 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php'
            'line' => 1130
            'function' => 'updateByPk'
            'class' => 'CActiveRecord'
            'type' => '->'
        )
        2 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php'
            'line' => 811
            'function' => 'update'
            'class' => 'CActiveRecord'
            'type' => '->'
        )
        3 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/protected/modules/backend/controllers/LoginServersController.php'
            'line' => 33
            'function' => 'save'
            'class' => 'CActiveRecord'
            'type' => '->'
        )
        4 => array
        (
            'function' => 'actionForm'
            'class' => 'LoginServersController'
            'type' => '->'
            'file' => 'unknown'
            'line' => 0
        )
        5 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/actions/CAction.php'
            'line' => 109
            'function' => 'invokeArgs'
            'class' => 'ReflectionMethod'
            'type' => '->'
        )
        6 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/actions/CInlineAction.php'
            'line' => 47
            'function' => 'runWithParamsInternal'
            'class' => 'CAction'
            'type' => '->'
        )
        7 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CController.php'
            'line' => 308
            'function' => 'runWithParams'
            'class' => 'CInlineAction'
            'type' => '->'
        )
        8 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CController.php'
            'line' => 286
            'function' => 'runAction'
            'class' => 'CController'
            'type' => '->'
        )
        9 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CController.php'
            'line' => 265
            'function' => 'runActionWithFilters'
            'class' => 'CController'
            'type' => '->'
        )
        10 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php'
            'line' => 282
            'function' => 'run'
            'class' => 'CController'
            'type' => '->'
        )
        11 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php'
            'line' => 141
            'function' => 'runController'
            'class' => 'CWebApplication'
            'type' => '->'
        )
        12 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/base/CApplication.php'
            'line' => 185
            'function' => 'processRequest'
            'class' => 'CWebApplication'
            'type' => '->'
        )
        13 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/public/index.php'
            'line' => 51
            'function' => 'run'
            'class' => 'CApplication'
            'type' => '->'
        )
    )
)
 
ElectroMyStyle, я проводил неправильные тесты. В настройках сайта не менял тип авторизации. После вашего последнего сообщения попробовал сделать это и получил ошибку. Похоже, на не соответствии типов. Колонку password_type мне не удалось найти, чтобы увеличить количество символов.
Тестировал и с кодом Mex-Vision и с вашим вариантом. Текст ошибки одинаковый.
Не уверен, что получится безболезненно поменять тип авторизации на сайте. Ведь, когда я менял на whirpool, мне приходилось менять тип авторизации и на сервере, и перезапускать его.

PHP:
array
(
    'code' => 500
    'type' => 'CDbException'
    'errorCode' => 22001
    'message' => 'CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column \'password_type\' at row 1'
    'file' => '/usr/share/nginx/html/ghtweb5/framework/db/CDbCommand.php'
    'line' => 358
    'trace' => '#0 /usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php(1756): CDbCommand->execute()
#1 /usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php(1130): CActiveRecord->updateByPk()
#2 /usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php(811): CActiveRecord->update()
#3 /usr/share/nginx/html/ghtweb5/protected/modules/backend/controllers/LoginServersController.php(33): CActiveRecord->save()
#4 [internal function]: LoginServersController->actionForm()
#5 /usr/share/nginx/html/ghtweb5/framework/web/actions/CAction.php(109): ReflectionMethod->invokeArgs()
#6 /usr/share/nginx/html/ghtweb5/framework/web/actions/CInlineAction.php(47): CAction->runWithParamsInternal()
#7 /usr/share/nginx/html/ghtweb5/framework/web/CController.php(308): CInlineAction->runWithParams()
#8 /usr/share/nginx/html/ghtweb5/framework/web/CController.php(286): CController->runAction()
#9 /usr/share/nginx/html/ghtweb5/framework/web/CController.php(265): CController->runActionWithFilters()
#10 /usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php(282): CController->run()
#11 /usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php(141): CWebApplication->runController()
#12 /usr/share/nginx/html/ghtweb5/framework/base/CApplication.php(185): CWebApplication->processRequest()
#13 /usr/share/nginx/html/ghtweb5/public/index.php(51): CApplication->run()
#14 {main}'
    'traces' => array
    (
        0 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php'
            'line' => 1756
            'function' => 'execute'
            'class' => 'CDbCommand'
            'type' => '->'
        )
        1 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php'
            'line' => 1130
            'function' => 'updateByPk'
            'class' => 'CActiveRecord'
            'type' => '->'
        )
        2 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/db/ar/CActiveRecord.php'
            'line' => 811
            'function' => 'update'
            'class' => 'CActiveRecord'
            'type' => '->'
        )
        3 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/protected/modules/backend/controllers/LoginServersController.php'
            'line' => 33
            'function' => 'save'
            'class' => 'CActiveRecord'
            'type' => '->'
        )
        4 => array
        (
            'function' => 'actionForm'
            'class' => 'LoginServersController'
            'type' => '->'
            'file' => 'unknown'
            'line' => 0
        )
        5 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/actions/CAction.php'
            'line' => 109
            'function' => 'invokeArgs'
            'class' => 'ReflectionMethod'
            'type' => '->'
        )
        6 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/actions/CInlineAction.php'
            'line' => 47
            'function' => 'runWithParamsInternal'
            'class' => 'CAction'
            'type' => '->'
        )
        7 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CController.php'
            'line' => 308
            'function' => 'runWithParams'
            'class' => 'CInlineAction'
            'type' => '->'
        )
        8 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CController.php'
            'line' => 286
            'function' => 'runAction'
            'class' => 'CController'
            'type' => '->'
        )
        9 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CController.php'
            'line' => 265
            'function' => 'runActionWithFilters'
            'class' => 'CController'
            'type' => '->'
        )
        10 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php'
            'line' => 282
            'function' => 'run'
            'class' => 'CController'
            'type' => '->'
        )
        11 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/web/CWebApplication.php'
            'line' => 141
            'function' => 'runController'
            'class' => 'CWebApplication'
            'type' => '->'
        )
        12 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/framework/base/CApplication.php'
            'line' => 185
            'function' => 'processRequest'
            'class' => 'CWebApplication'
            'type' => '->'
        )
        13 => array
        (
            'file' => '/usr/share/nginx/html/ghtweb5/public/index.php'
            'line' => 51
            'function' => 'run'
            'class' => 'CApplication'
            'type' => '->'
        )
    )
)
Слишком длинный пароль. Видимо колонка в бд не рассчитывалась под такую длинную строку. Надо изменить допустимую длину колонки password_type.

PS: Это как минимум. Дальше смотреть что происходит.
И да, если вы изменили код на новый, с примера ElectroMyStyle, необходимо изменить и метод для сравнения паролей, он должен вытаскивать соль со строки и генерировать временный хэш для сравнения.
 
Да, вы правы, нашёл поле password_type в таблице ghtweb_ls. Увеличил количество символов до 20-и.

Mex-Vision, после смены типа шифрования и регистрации новой учётки, я не могу зайти на сайт в ЛК, но пароль подходит в ЛС. =))
Тестирую на ваших изменённых файлах. Код ElectroMyStyle убрал.
 
Mex-Vision, после смены типа шифрования и регистрации новой учётки, я не могу зайти на сайт в ЛК, но пароль подходит в ЛС. =))
киньте файл
 
Запрошенный файл.
 

Вложения

  • Lineage.zip
    3,4 КБ · Просмотры: 4
Я получаю сообщение об ошибке. Прилагаю скриншот. Но эта же комбинация логина и пароля подходит в ЛС. 1651072072612.png
 
Я получаю сообщение об ошибке. Прилагаю скриншот. Но эта же комбинация логина и пароля подходит в ЛС.
Сделайте вывод паролей как я описал в предыдущем сообщении, чтобы понять какие данные паролей сравниваются при авторизации. Без этой информации сложно понять, что происходит и почему не проходит авторизация в ЛК на сайте. И прикрепите данные паролей в сообщении
 
ElectroMyStyle, для проверки надо использовать ваш блок кода из сообщения #21? Или можно на коде Мех-Vision?
 
Martali, тот код в LoginForm.php засунуть в 121 строку и он ни как по сути не влияет на то что указано в Lineage.php, так что в принципе на любом блоке, либо моём, либо Mex-Vision
 
ElectroMyStyle, сделал. У меня в 121 строке был другой код(видимо, Mex-Vision правил несколько файлов).
Значение на скрине совпадает со значением поля password таблицы accounts для логина tester5. Пароль тоже верный — 123456.


PHP:
// Аккаунт на сервере найден
                if ($account) {
                    if ($l2->checkHash($this->getPassword(), $account['password'])) {
                        // Аккаунта на сайте нет, создаю его так как на сервере он уже есть
                        if (!$siteAccount) {
                            $email = null;


PHP:
// Аккаунт на сервере найден
                if ($account) {
/**            if ($l2->checkHash($this->getPassword(), $account['password'])) { */
                $acc_password = $account['password'];
                $cur_password = $this->getPassword();
                var_dump($acc_password);
                var_dump($cur_password);
                if ($acc_password == $l2->passwordEncrypt($cur_password)) {
                        // Аккаунта на сайте нет, создаю его так как на сервере он уже есть
                        if (!$siteAccount) {
                            $email = null;

1651090683604.png
 
Martali, давайте разъясним ситуацию, а то уже ничего не понятно.
1. У вас стоит авторегистрация на сервере, верно? Или она отключена?
2. Вы зарегистрировали аккаунт с логином - tester5 и паролем 123456 через логин сервер, но на сайте такой аккаунт не регистрировался, так получается?
3. И теперь собственно вы пытаетесь войти на сайте и вас не пускает в ЛК? Или какой был сценарий регистрации аккаунт tester5?

Замените в своём файле Lineage.php две функции на мои:
PHP:
public function passwordEncrypt($password)
{
    if ($this->config('password_type') == Ls::PASSWORD_TYPE_WHIRLPOOL) {
        return base64_encode(hash('whirlpool', $password, true));
    } else if ($this->config('password_type') == Ls::PASSWORD_TYPE_PBKDF2WITHHMACSHA1) {
        $algorithm = "sha1";
        $iterations = 1000;
        $salt = random_bytes(24);
        $hash = hash_pbkdf2($algorithm, $password, $salt, $iterations, 24, true);
        return $algorithm . ":" . $iterations . ":" . base64_encode($salt) . ":" . base64_encode($hash);
    }

    return base64_encode(pack('H*', sha1(utf8_encode($password))));
}
и эту тоже
PHP:
    public function checkHash($password, $hash_password)
    {
        if ($this->config('password_type') == Ls::PASSWORD_TYPE_WHIRLPOOL) {
            $new_hash = base64_encode(hash('whirlpool', $password, true));
        }
        else if($this->config('password_type') == Ls::PASSWORD_TYPE_PBKDF2WITHHMACSHA1) {
            $PBKDF2Hash = explode(':', $hash_password);
            $algorithm = $PBKDF2Hash[0];
            $iterations = intval($PBKDF2Hash[1]);
            $salt = base64_decode($PBKDF2Hash[2]);
            $serverPasswordHash = base64_decode($PBKDF2Hash[3]);
            $currentPasswordHash = hash_pbkdf2($algorithm, $password, $salt, $iterations, 24, true);
            return (strcmp($serverPasswordHash, $currentPasswordHash) === 0);
        }
        else {
            $new_hash = base64_encode(pack('H*', sha1(utf8_encode($password))));
        }
        return $new_hash == $hash_password;
    }

и собственно в LoginForm.php удалите, то что я просил вас вставить оставив так как было ранее:
PHP:
if ($account) {
    if ($l2->checkHash($this->getPassword(), $account['password'])) {
        // Аккаунта на сайте нет, создаю его так как на сервере он уже есть
        if (!$siteAccount) {

После чего проверьте и напишите поведение работы при регистрации на сайте и собственно вход в игру, после чего регистрацию аккаунта через LS (если это нужно) и вход в ЛК на сайте
 
Доброго дня.
1. Нет, авторегистрация отключена.
2. Регистрирую пользователя на сайте. До внесения изменений в код, созданная на сайте учётка позволяла зайти и в ЛК сайта, и в ЛС, но после входа(в ЛС) доступ в ЛК сайта пропадал. Сейчас, при создании учётной записи на сайте, я сразу не могу попасть в ЛК сайта, но в ЛС заходит.
3. Описал во втором пункте.

После внесения новых изменений, предложенных вами, отпишусь.
 
Martali, непонятно ещё какой был хэш пароля на сервере в таблице аккаунтов после того как вы зарегистрировались на сайте, но ещё не пытались войти в игру, хотя этого мы уже не узнаем. Ладно, ждём пока вы внесёте изменения и попробуете вышеописанные действия
 
Почему не узнаем, всё записано =)) В моём сообщение #23 я прикладывал скрины со значением в БД. Скрины подписаны, хронология будет понятна.
У обоих пользователей tester11 и tester22 установлен пароль 123456. Тип шифрования на сайте был установлен sha1 на тот момент.
 
Martali, ааа, ну, тогда понятно как вас пускал логин сервер при авторизации. Ладно, попробуйте с моим кодом выше посмотрим что из этого получится
 
Назад
Сверху Снизу