Closed RealVaVa closed 12 years ago
Странно. Сейчас авторизация заработала, вроде как (это я понял по ошибке "бэд логин" в случае неверно введённого пароля), но вываливается всё та же ошибка. Ковыряю на предмет проверки версии лаунчера. Таблица "data", указанная в connect.php существует и заполнена.
на всякий слчай auth.php <?php define('INCLUDE_CHECK',true); require_once '../functions.php'; include ("../connect.php"); $login=$_POST['user']; $postPass=$_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 (checkPass($realPass,$postPass))
{
$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('У вас нет прав на выполнение данного файла!');
// Конфигурация подключения к базе данных $db_host = 'localhost'; // Ip-адрес базы данных $db_port = 3306; // Порт базы данных $db_user = 'newmc'; // Пользователь базы данных $db_pass = '*****'; // Пароль базы данных
// Конфигурация базы данных для плагинов AuthMe, xAuth, CAuth / $db_database - имя базы данных, значение по умолчанию для плагинов: AuthMe = authme, xAuth = отсутствует (указывается вручную), CAuth = cauth / $db_database = 'newmc';
/ $db_table - таблица базы данных, значение по умолчанию для плагинов: AuthMe = authme, xAuth = accounts, CAuth = users / $db_table = 'accounts';
/ $db_columnId - уникальный идентификатор, значение по умолчанию для плагинов: AuthMe = id, xAuth = id, CAuth = id / $db_columnId = 'id';
/ $db_columnUser - колонка логина, значение по умолчанию для плагинов: AuthMe = username, xAuth = playername, CAuth = login / $db_columnUser = 'playername';
/ $db_columnPass - колонка пароля, значение по умолчанию для плагинов: AuthMe = password, xAuth = password, CAuth = password / $db_columnPass = 'password';
/ $db_columnEmail - колонка email'a / $db_columnEmail = 'email';
/ $db_columnLastLogl - колонка даты последнего входа / $db_columnLastLog = 'lastlogindate';
/ $db_columnRegDate - колонка даты регистрации / $db_columnRegDate = 'registerdate';
/ $db_columnSesId - колонка id сессии / $db_columnSesId = 'session';
/ $db_columnServer - колонка id сервера / $db_columnServer = 'server';
/ Настройки таблицы для защиты от подбора паролей / $db_ErrorLogtable = 'errorlogin'; $db_Ipcolumn = 'ip'; $db_Datecolumn = 'date'; $db_Numcolumn = 'num';
/ $db_GameDatatable - имя базы данных с информацией о версиях / $db_GameDatatable = 'data';
/ НЕ МЕНЯТЬ / $db_Propertycolumn = 'property'; $db_Valuecolumn = 'value';
$link = @mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die('Невозможно установить соединение с базой данных!');
mysql_select_db($db_database,$link); mysql_query("SET names UTF8"); ?>
скорее всего ты не правильно настроил connect.php или у тебя не правильная база(нет нужных колонок/таблиц) сообщение в лаунчере может быть только одним из этих: "Запрос к базе завершился ошибкой." "Невозможно установить соединение с базой данных!"
Проблема в том, что веба то работает нормально, обращаясь к базе с помощью того же connect.php . Я создаю пустую базу и импортячу вот это щасте https://github.com/byxar/MinecraftSkinSystem/tree/master/skin_system(auth%20system%20included)/system(byxar's%20edition)/sql (add_colums.sql завивать не стал, ибо дублирует поля, хотя щас попробовал ради эксперимента - не поомогло)
Меня смущает вот эта запись в коннект.пхп
/ $db_GameDatatable - имя базы данных с информацией о версиях / $db_GameDatatable = 'data';
База данных? Отдельная база данных или таки таблица? Но и таблицы такой нет у меня. Я брал из system_forums(based on byxar's edition) data.sql и из auth_system_scripts, импортировал в ту же базу, но и это не помогло.
И ещё интересный момент - если бы он некорректно обращался к базе данных, то и бэд логин бы вряд ли выдавал. Не так?
там опечатка, имя таблицы
а зачем ваще add_colums в самостоятельной системе? откуда брать эту таблицу (это я про дату)? Что в ней должно быть? Как это различить?
Косяк, действительно, в connect.php
<?php if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
// Метод хеширования пароля. Используется md5. !!!!Вот этого не было в оригинальном пхп-шнике /* 'hash_md5' - md5 хеширование
*/ $crypt = 'hash_md5';
// Конфигурация подключения к базе данных $db_host = 'localhost'; // Ip-адрес базы данных $db_port = 3306; // Порт базы данных $db_user = 'user'; // Пользователь базы данных $db_pass = 'password'; // Пароль базы данных
/ $db_database - имя базы данных, значение по умолчанию: / $db_database = 'database';
/ $db_table - таблица базы данных. В самостоятельной системе исползуется accounts / $db_table = 'accounts';
/ $db_columnUser - колонка логина / $db_columnUser = 'playername';
/ $db_columnPass - колонка пароля / $db_columnPass = 'password';
/ $db_columnSesId - колонка id сессии. !!!Этого тоже не было. / $db_columnSesId = 'sesId';
/ $db_columnServer - колонка id сервера. !!!Как и этого тоже / $db_columnServer = 'serverId';
/ $db_GameDatatable - имя !таблицы! с информацией о версиях. Таблицы в загрузке, кстати, нет, нужно добавит строки непосредственно в accounts.sql / $db_GameDatatable = 'data';
/ НЕ МЕНЯТЬ / $db_Propertycolumn = 'property'; $db_Valuecolumn = 'value';
$link = @mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die('Невозможно установить соединение с базой данных!');
mysql_select_db($db_database,$link); mysql_query("SET names UTF8"); ?>
А ещё в том, что нет таблицы data
файл add_columns.sql добавляет колонки сессии и ID сервера в уже существующую базу(нужно для системы авторизации). измените в нем table_name на название таблицы с аккаунтами, sesId на название колонки с сессией и serverId на название колонки с ID сервера.
data.sql можно взять отсюда https://github.com/byxar/MinecraftSkinSystem/blob/master/skin_system(auth%20system%20included)/system_forums(based%20on%20byxar's%20edition)/sql/data.sql
Так речь то идёт об самостоятельной (автономной) системе, которая вами разработана. А из add_colums.sql лучше просто колонки сразу в accounts.sql добавить. Но прилагаемый к автономной системе connect.php 100% нерабочий. Замените, пожалуйста, чтобы народ не путался, как я.
Самое забавное, что возникла очень интересная ошибка: Falied to Login. OK Это уже поменяный minecraft.jar говорит, и я не могу найти откуда он такую ошибку выводит.
Экспирементальным путём выяснил, что ошибка связана с chechserver.php (проверял и на оригинальном и на бакките). Не принимает сервер коннекты от пользаков. Видимо неверный запрос посылается. Содержание файлика <?php define('INCLUDE_CHECK',true); include ("connect.php");
$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_columnUser='$user' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
if(mysql_num_rows($result) == 1){ echo "YES"; } else{ echo "NO"; }
?>
Взял за основу system(byxar's edition) (автономную систему), развернул. Через веб зарегистрировал пользователей успешно. Скомпилировал лаунчер (экспериментировал на всех трёх - стандартном, с возможностью изменения используемой памяти и портабельный). При подключении в лаунчере вываливается ошибка кракозябрами, несмотря на то, что использовал исходную кодировку UTF-8 без ВОМ, вручную перекодировал в UTF-8 все php-ники, пробовал даже ANSI (так, для ржаки) - один хрен ошибка выходит кракозябрами, и конкретизировать что и откуда не могу. Скрин тут (ссылка прямая) - http://vava.nnover.ru/data/uf2/3379331/26/79/6267915_mc_error.png Куда копать?