Интеграция форума в сайт

нужна такая интеграция


  • Всего проголосовало
    7
Статус
В этой теме нельзя размещать новые ответы.

Deniz

Проверенные
Сообщения
20
Реакции
7
Баллы
3,305
Есть сайт на платном хостинге. Нужно прикрутить XenForo, стоящий в отдельной папке mysite/forum.
Регистрация юзеров происходит на сайте и может быть изменена для нужд авторизации на форуме. Саму ссылку регистрации авторизации на форуме надо убрать.
Все другие ссылки и перенаправления на регистрацию авторизацию на форуме должны быть переделаны на страницу регистрации сайта.
Реализация скрипта должна быть на mysite сервере, это не должен быть какой-то внешний скрипт. Скрипт не должен тормозить работу сайта.
 
Deniz, я делал для себя в таком виде: при регистрации: создается отдельный пользователь в соседней БД с паролем , который указывался на форуме, а потом уже авторизацию через эту самую соседнюю БД) смена пароля через форум.

Для моих нужд с головой, если нужно, могу подсказать где и что вставить для такой схемы.
 
У меня на сайте аккаунты можно создавать исключительно на форуме.
А на сайте сделана общая с форумом форма авторизации.

Сам HTML-код формы какой-то такой:
HTML:
<div class="loginbox">                                                                                 
            <form id="loginform" action="<?= $forumPath ?>login/login" method="post">                          
                <label for="navbar_username"><?= $lang['login'] ?></label>                                     
                <input type="text" id="navbar_username" name="login">                                          
                <label for="navbar_login"><?= $lang['password'] ?></label><input type="password" id="navbar_login" name="password">
                <label for="cb_cookieuser_navbar"><input name="remember" type="checkbox" id="cb_cookieuser_navbar" value="1" checked="checked"/><?= $lang['save_login'] ?></label>
                <div class="centeralign">                                                                      
                    <input type="submit" value="<?= $lang['do_login'] ?>"/>                                    
                </div>                                                                                         
                <br/>                                                                                          
                <input type="hidden" name="cookie_check" value="1" />                                          
                <input type="hidden" name="_xfToken" value="<?= XenForoUtility::$visitor['csrf_token_page'] ?>"/>
            </form>                                                                                            
</div>
В ней переменные:
$forumPath - веб-путь к форуму.
XenForoUtility::$visitor['csrf_token_page'] - CSRF-токен посетителя. Его можно получить через вызов XenForo_Visitor::getInstance()->toArray();
А чтобы сделал этот вызов, нужно сначала подключить автолоадер XenForo к своему сайту, а затем инициализировать XenForo_Application.
 
SAS, спасибо за код, давно спрашивал тут, никто не помог, а тут уже готовый вариант :-)

P.S. Пробовали проводить авторизацию на сайте с данными форума , без перенаправления на форум, для создания каких нить личных кабинетов совмещенных с форумной авторизацией?

Может подскажите - какие данные форум возвращает после успешной авторизации (переменные? куки?)
 
Последнее редактирование:
P.S. Пробовали проводить авторизацию на сайте с данными форума , без перенаправления на форум, для создания каких нить личных кабинетов совмещенных с форумной авторизацией?
А при этом варианте авторизации как раз никакого перенаправления на форум и не происходит. При успешной авторизации сразу же идёт возврат на ту страницу, с которой была авторизация. При этом если вызвать (это опять кусок из вспомогательного класса, который написан у меня):
PHP:
                XenForo_Session::startPublicSession();
                $visitor       = XenForo_Visitor::getInstance();
                self::$visitor = XenForo_Visitor::getInstance()->toArray();
                if ( $visitor->getUserId() ) {
                    $userModel             = XenForo_Model::create( 'XenForo_Model_User' );
                    self::$currentUserInfo = $userModel->getFullUserById( $visitor->getUserId() );
                }
То в self::$currentUserInfo будет информация о залогинившемся пользователе - его ID, группы, ник, и всё-всё-всё. Если авторизация неуспешна - этот массив будет пустым.

Ну и да, у меня на сайте у каждого пользователя есть отдельный сайтовый профиль.

P.S. на всякий случай: приведённый выше пример не будет работать если просто взять и копипастнуть его. Это просто кусок кода, демонстрирующий метод получения информации о текущем пользователе из его текущей сессии.
 
SAS, вы злодей, :-) привели бы уже полноценно рабочий код обычной авторизации, без ваших механизмов и секретов, так сказать "Hello, World авторизация"
А не подскажите, как вы до всего этого дошли? Я не думаю, что простым ковырянием кода форума? Наверняка есть какие-то доки по всему этому?

Но все равно, большое спасибо :-) схороню, возможно когда нить очень и очень пригодится.

P.S. Иконки разделов вашего форума вызвали слезу ностальгии по игре Goblins
 
Последнее редактирование:
DiWorm, :-) Вообще, я пользовался вот (там кстати почти готовый код для интеграции), а так же подглядывал в движок форума (см. метод run в FrontController.php)
 
SAS, спасибо, то, что нужно) теперь я думаю вопросов не останется о том, как сделать мост от самописной С.У.К.
 
Итак, господа!
Запрос остаётся...

ТЗ
Есть сайт на платном хостинге. Нужно прикрутить XenForo, стоящий в отдельной папке mysite/forum.
Регистрация/авторизация юзеров происходит на сайте и может быть изменена для нужд авторизации на форуме, - эту часть беру на себя, скажете какие данные Вам нужны (переменные-значения), я сделаю.

Как я понимаю, у форума есть своя процедура, и эта процедура просто должна получить определённый массив данных (id, email, nikname...) с сайта?

то есть изменить связь
(форма форума)->(процедура авторизации форума)
на
(форма сайта)->(процедура авторизации форума)

Саму ссылку регистрации авторизации на форуме надо убрать (некрасиво будет два входа), и соответственно, если чужой пользователь делает что-то, что требует авторизации, то его форвардит на форму регистрации/авторизации... Это надо переделать на то чтобы форвардило на процедуру на сайте.
Реализация скрипта должна быть на mysite сервере, это не должен быть какой-то внешний скрипт. Скрипт не должен тормозить работу сайта.

По деньгам - 5 тысяч рублей.

Спасибо!

SAS, спасибо, то, что нужно) теперь я думаю вопросов не останется о том, как сделать мост от самописной С.У.К.

Сделал! Всё получилось как и было задумано. Не как многие советуют, - авторизовываться на форуме, а сайт лишь подхватывает куку и сессию...
Именно авторизация на сайте, и в случае успеха - авторизация на форуме, всё на PHP.
Yeees!
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу