Уважаемые коллеги! Поясню суть обращения. Есть сайт, который был рассчитан на 1 базу (auth) и естественно на все реалмы указанные в таблице той базы. У меня 2 базы auth под реалмы 3.3.5 и 4.3.4. Сайт (статистику) полностью вывел под 2 базы реалмов и всё нормально, но есть проблемки с авторизацией на сайте и входом в личный кабинет. Авторизация на сайте тесно связана с личным кабинетом и надо сделать чтоб при входе в панель авторизации производился выбор реалма (базы данных) игроком, менялась форма и игрок мог нормально авторизироваться на нужном сервере и так же войти потом в личный кабинет.
ссылка на картинку вот сама форма авторизации. Вот как бы сделать выбор реалмов и возможность авторизироваться на нужном.
$realm = mysql_fetch_assoc(mysql_query("SELECT * FROM $server_adb.realmlist WHERE id = '".$realm_id."'")); $realm_extra = mysql_fetch_assoc(mysql_query("SELECT * FROM realms WHERE realmid = '".$realm_id."'"));
$server_cdb = $realm_extra['char_db'];
$select = mysql_fetch_assoc(mysql_query("SELECT guid,race,gender FROM $server_cdb.characters WHERE guid = '".$character_id."' AND account = '".$account_information['id']."'"));
$login_query = mysql_query("SELECT * FROM $server_adb.account WHERE username = '".mysql_real_escape_string($_SESSION["username"])."'"); $login2 = mysql_fetch_assoc($login_query);
$uI = mysql_query("SELECT * FROM $server_db.users WHERE id = '".$login2['id']."'"); @$userInfo = mysql_fetch_assoc($uI);
$numchars = 0;
if($account_extra['character'] != 0){ $realm_extra = mysql_fetch_assoc(mysql_query("SELECT * FROM realms WHERE realmid = '".$account_extra['char_realm']."'")); $realm = mysql_fetch_assoc(mysql_query("SELECT * FROM $server_adb.realmlist WHERE id = '".$realm_extra['realmid']."'"));
$query001 = mysql_query("SELECT * FROM $server_cdb.characters WHERE account = '".$account_information['id']."' AND guid = '".$account_extra['character']."'"); if(mysql_num_rows($query001) > 0){ $actualchar = mysql_fetch_assoc($query001); $numchars++; } else { mysql_query("UPDATE $server_db.users SET `character` = 0 WHERE id = $account_extra[id]") or die(mysql_error("Cannot remove character from web db")); header("Location : index.php"); }
}else{
$get_realms = mysql_query("SELECT * FROM $server_adb.realmlist ORDER BY `id` DESC"); if($get_realms){ while($realm = mysql_fetch_array($get_realms)){ $realm_extra = mysql_fetch_assoc(mysql_query("SELECT * FROM realms WHERE realmid = '".$realm['id']."'"));
$check_chars = mysql_query("SELECT * FROM $server_cdb.characters WHERE account = '".$account_information['id']."' ORDER BY `guid` DESC"); if($check_chars){
//Re-Check $account_extra = mysql_fetch_assoc(mysql_query("SELECT * FROM $server_db.users WHERE id = '".$account_information['id']."'"));
@$set_character = mysql_query("UPDATE users SET `avatar` = '".$avatar."', `character` = '".$actualchar['id']."', `char_realm` = '".$realm_extra['id']."' WHERE id = '".$account_extra['id']."'"); } } $numchars = $numchars + mysql_num_rows($check_chars); } }
}
if($numchars != 0){
switch( $actualchar["race"] ) { case 2: case 5: case 6: case 8: case 9: case 10: $side = "Орда"; break; default: $side = "Альянс"; }
function racetxt($race){ switch($race){ case 1: return "Человек"; break; case 2: return "Орк"; break; case 3: return "Дворф"; break; case 4: return "Ночной Эльф"; break; case 5: return "Нежить"; break; case 6: return "Таурен"; break; case 7: return "Гном"; break; case 8: return "Троль"; break; case 9: return "Гоблин"; break; case 10: return "Эльф крови"; break; case 11: return "Дреней"; break; case 22: return "Ворген"; break;
} }
function classtxt($class){ switch($class){ case 1: return "Воин"; break; case 2: return "Паладин"; break; case 3: return "Охотник"; break; case 4: return "Разбойник"; break; case 5: return "Жрец"; break; case 6: return "Рыцарь смерти"; break; case 7: return "Шаман"; break; case 8: return "Маг"; break; case 9: return "Чернокнижник"; break; case 10: return "Друид"; break; } }
$get_realms = mysql_query("SELECT * FROM $server_adb.realmlist ORDER BY `id` DESC"); if($get_realms){ while($realm = mysql_fetch_array($get_realms)){ $realm_extra = mysql_fetch_assoc(mysql_query("SELECT * FROM realms WHERE realmid = '".$realm['id']."'"));
$server_cdb = $realm_extra['char_db']; $check_chars = mysql_query("SELECT * FROM $server_cdb.characters WHERE account = '".$account_information['id']."' ORDER BY `guid` DESC");
$current_realm = mysql_fetch_assoc(mysql_query("SELECT * FROM realms WHERE id = '".$account_extra['char_realm']."'"));
Скрипт сам изучать ваш не стал. Если вы хотите сделать вход в лс на подобии как на wowcircle, то это реализуется по следующему алгоритму: К примеру у вас две бызы auth3.3.5 и auth4.3.4. На сайте создаем две кнопки на выбор пользователю для авторизации нужного реалма. В конфиге обязательно должно быть усмотренно подключение к этим двум базам. Начинаем скрипт: include("config.php"); if($_post['auth3.3.5']){ тут делаем селект к базе auth3.3.5, форму авторизации, запись сессии и Куки и вывод данных при положительном входе} //$_post['auth3.3.5'] это имя кнопки реалма. Ниже точно так же делаем и для auth4.3.4. Напишите в лс и смогу объяснить в более масштабной форме.