z8ToT8z Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 Доброго времени суток, в общем суть такова планирую своими силами модернизировать регистрацию с форума IPB в дополнительную базу, к примеру для игрового сервера WoWПредлагаю перейти к обсуждению данного решения, возможно людям это будет полезным. И так, что мы имеем: № 1 Стандартная регистрация форума IPB - https://gadgetzan-lines.com/index.php?/register/ № 2 Стандартная регистрация для игрового сервера - https://gadgetzan-lines.com/reg/ По сути формы одинаковы, на базы конечно же разные. Задача: -Избавиться от регистрации номер №2, что бы при регистрации на форуме можно было попасть и в игру. Какие варианты решения задачи имеем? Ниже прикреплен дамп с таблицей account базы auth, именно в эту таблицу должна идти дополнительная регистрация! account.sql Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
iKODEAK Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 В ipb в ядре регистрации добавить данные о подключении к другой бд и создать запрос о регистрации (добавлении данных ) Подводные камни могут быть с шифрованием пароля. z8ToT8z 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 13 минут назад, iKODEAK сказал: В ipb в ядре регистрации добавить данные о подключении к другой бд и создать запрос о регистрации (добавлении данных ) Подводные камни могут быть с шифрованием пароля. Допустим, сейчас залез в файлы форума, ох уж это ООП, подскажи какой именно файл-скрипт осуществляет заполнение базы, почему то в базе форума, таблица регистрации называется core_members, какие еще сюрпризы ждать от разработчиков IPB? Потому что я уже минут 30 копаюсь и не могу найти нужный скрипт регистрации.... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 z8ToT8z, очень давно делал такое. там особое шифрование нужно добавить в IPS4 .. без хаков не обойтись. Нужно глянуть какой нибудь скрипт регистрации для сервера и глянуть как он шифрует пароли и потом уже делать хак. За заполнение базы юзеро отвечает //создать юзера new \IPS\Member(); /// пример загрузки и редакритования $user = \IPS\Member::load( 1 ); $user->name = 'Новое имя'; $user->save(); /// вызывать нужно всегда чтоб сохранить данные Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 9 минут назад, greykoo сказал: z8ToT8z, очень давно делал такое. там особое шифрование нужно добавить в IPS4 .. без хаков не обойтись. Нужно глянуть какой нибудь скрипт регистрации для сервера и глянуть как он шифрует пароли и потом уже делать хак. Вот та регистрация что у меня сейчас стоит, простая без заморочек. reg_ajax_v2.rar Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
iKODEAK Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 18 минут назад, z8ToT8z сказал: Допустим, сейчас залез в файлы форума, ох уж это ООП, подскажи какой именно файл-скрипт осуществляет заполнение базы, почему то в базе форума, таблица регистрации называется core_members, какие еще сюрпризы ждать от разработчиков IPB? Потому что я уже минут 30 копаюсь и не могу найти нужный скрипт регистрации.... Выключить цпу и в адресе будет ответ какой файл смотреть. z8ToT8z 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 Всё понятною При регистрации нужно отправлять такие данные в БД на сервер wow, т.е нужно изменить функцию регистрации и изменить данные sha1(strtoupper('логин:'.strtoupper('пароль')); z8ToT8z 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 7 минут назад, greykoo сказал: Всё понятною При регистрации нужно отправлять такие данные в БД на сервер wow, т.е нужно изменить функцию регистрации и изменить данные sha1(strtoupper('логин:'.strtoupper('пароль')); Можно по подробнее? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 Если моя теория верна - значит авторизация должна работать System -> Login Handlers->External Database Сам метод нужно включить и настроить его Настроить External Database Установить хак wowautch.xml Попробуй зайти из БД wow и тестируй только на тестовом сервере ибо тут не все функции заскрипчены , просто проверить нужно wowautch.xml z8ToT8z 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 Сейчас попробую!) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 Авторизация работает отлично, т.е. теперь можно с 2-х баз заходить!) Xuc 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 2 минуты назад, z8ToT8z сказал: Авторизация работает отлично, т.е. теперь можно с 2-х баз заходить!) Нужно так же еще сделать смену пароля и при регистрации отправлять в БД данные. Как время будет - сделаю z8ToT8z 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 Теперь вся надежда на Вас greykoo! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 (изменено) 2 часа назад, z8ToT8z сказал: Теперь вся надежда на Вас greykoo! Должно работать: регистрация. при этом данные должны подходить на сервере Смена пароля Авторизация (включая уже зареганые аккаунты на сервере ) Пробуй wowautch.xml wowautch.xml Отпишись о результатах. wowautch.xml Изменено 30 сентября, 2016 пользователем greykoo Xuc и z8ToT8z 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
soka Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 В IPB есть такая штука как синхронизация пользователей (MemberSync), она выполняется при определенных событий on%Event% и имеет в своем классе большинство событий для полноценной синхронизации пользователя с удаленной базой данных - onCreateAccount, onLogin, onDelete, onProfileUpdate и тд. Этот инструмент дает больше возможностей для управления. Правда, с паролем там небольшие проблемы, так как есть только изменяемые поля, но нету "чистого" пароля. Можно и с методом авторизации синхронизировать, с костылями для хеширования пароля, регистрация аккаунта на примере выше это получилось так WoW External Auth.xml WoW External Auth.xml z8ToT8z 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 1 октября, 2016 Автор Поделиться Опубликовано 1 октября, 2016 13 минут назад, soka сказал: В IPB есть такая штука как синхронизация пользователей (MemberSync), она выполняется при определенных событий on%Event% и имеет в своем классе большинство событий для полноценной синхронизации пользователя с удаленной базой данных - onCreateAccount, onLogin, onDelete, onProfileUpdate и тд. Этот инструмент дает больше возможностей для управления. Правда, с паролем там небольшие проблемы, так как есть только изменяемые поля, но нету "чистого" пароля. Можно и с методом авторизации синхронизировать, с костылями для хеширования пароля, регистрация аккаунта на примере выше это получилось так WoW External Auth.xml WoW External Auth.xml Ну проблема уже решена. Огромное спасибо хочется выразить greykoo, если бы не он, я бы мучился долго, очень долго! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
soka Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 (изменено) 8 минут назад, z8ToT8z сказал: Ну проблема уже решена. greykoo, это лучше заменить if( !empty( $_POST['auth'] ) ) { $username = $_POST['auth']; }else if( !empty( \IPS\Member::loggedIn()->name ) ) { $username = \IPS\Member::loggedIn()->name; } else { return null; } Иначе, если администратор сменит пароль пользователю из АЦ в получим в качестве username имя администратора. Да и при регистрации под вопросом, хотя не смотрел. Изменено 1 октября, 2016 пользователем soka Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 soka, у меня при регистрации - чистое поле. Зачем заполнять пароль если IPS работает с другой БД Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
soka Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 Удаленная база это такое, сегодня она есть завтра ее нету. Паролю лучше быть, имхо. Да и сможет ли пользователь сменить себе пароль на форуме если его нету? По моему нет. Только на удаленной базе. А если администратора в АЦ форума сменит пароль пользователя, тогда в username хеша будет имя текущего авторизированого пользователя. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 soka, это вов сервер - ему жизненно необходимо иметь прямое взаимодействие - иначе ты потеряешь игрока. По этому нужно юзать удаленку и работать именно с ней. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
soka Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 (изменено) У вас функция смены пароля будет использовать имя текущего пользователя, еще раз обратите внимание, если администратор попытается сменить этому пользователю пароль в АЦ и при этом запустится changePassword он поломает ему пароль в удаленной базе. Это потенциальный баг. А наличия паролей в двух базах никоем образом не мешает "прямому взаймодействию". Если взамодействие жизнено важно нужно смотреть в другую сторону, а именно в memberSync. Изменено 1 октября, 2016 пользователем soka Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 1 октября, 2016 Автор Поделиться Опубликовано 1 октября, 2016 Хм, нужно проверить что и как будет... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 1 час назад, soka сказал: У вас функция смены пароля будет использовать имя текущего пользователя, еще раз обратите внимание, если администратор попытается сменить этому пользователю пароль в АЦ и при этом запустится changePassword он поломает ему пароль в удаленной базе. Это потенциальный баг. А наличия паролей в двух базах никоем образом не мешает "прямому взаймодействию". Если взамодействие жизнено важно нужно смотреть в другую сторону, а именно в memberSync. Я делал так как это делает IPS - то есть не стал добавлять пароли в базу. Взаимодействовать с БД нужно моментально ибо игроки не станут ждать пока аккаунт зарегается через какое-то там время , я уже об этом писал - это очень важно Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
z8ToT8z Опубликовано 1 октября, 2016 Автор Поделиться Опубликовано 1 октября, 2016 А если работать прикрепить к форуму модуль скажем личного кабинета для игрового сервера? Но конечно хотелось бы все реализовать на базе форума. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
greykoo Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 z8ToT8z, в моем хаке работает смена пароля/авторизация и регистрация, а так же вход на сам сервер ? Ты проверил это всё? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.