avgaz Posted January 2, 2016 Share Posted January 2, 2016 Здравствуйте, подскажите как реализовать вывод к примеру имени пользователя, id, мыла и другой ифны автоматизированного пользователя, на отдельную от форума страницу?К примеру есть страница start.php нужно что бы при её просмотре пользователю вывелся его логин, id, группа, мыло. Link to comment Share on other sites More sharing options...
siv1987 Posted January 2, 2016 Share Posted January 2, 2016 <?php define( 'ENFORCE_ACCESS', TRUE ); require_once 'init.php'; \IPS\Dispatcher\External::i(); $member = \IPS\Member::loggedIn(); var_dump( $member ); ?> Link to comment Share on other sites More sharing options...
avgaz Posted January 4, 2016 Author Share Posted January 4, 2016 Спасибо это то что нужно, но остались ещё вопросы.Как достать ключ логина, то есть к примеру при ссылке Выход используется ключ например logout/?csrfKey=0f8ce0ac1a3ee2cfd1523c2f68a50307 вот как получить этот ключ то же на отдельной странице?Где храниятся названия разделов и их описание? в таблице forums_forums их нет, то же самое с группами, нашёл их название в таблице core_sys_lang_words но не могу понять по какому принципу сделать выборку из этой таблицы, то есть к примеру у группы значение id равно 4 как вывести название группы из этой таблицы? Link to comment Share on other sites More sharing options...
siv1987 Posted January 4, 2016 Share Posted January 4, 2016 csrf ключ: \IPS\Session::i()->csrfKey Link to comment Share on other sites More sharing options...
newbie Posted January 5, 2016 Share Posted January 5, 2016 Где храниятся названия разделов и их описание? в таблице forums_forums их нет, то же самое с группами, нашёл их название в таблице core_sys_lang_words но не могу понять по какому принципу сделать выборку из этой таблицы, то есть к примеру у группы значение id равно 4 как вывести название группы из этой таблицы? Зачем вообще туда лезть? Работа с группами:\IPS\Member\Group::groups() Работа с форумами:\IPS\forums\Forum::roots() Link to comment Share on other sites More sharing options...
avgaz Posted January 5, 2016 Author Share Posted January 5, 2016 Это не то, с помощью этого можно вывести все из таблицы групп, но кроме названий групп которых там нет, то же самое и с форумами Link to comment Share on other sites More sharing options...
newbie Posted January 6, 2016 Share Posted January 6, 2016 $groupsNames = array(); foreach (\IPS\Member\Group::groups() as $group) { $groupsNames[] = $group->name; } $groupsAsString = implode(', ', $groupsNames); \IPS\Member::loggedIn()->language()->parseOutputForDisplay( $groupsAsString ); print $groupsAsString; Мультиязычно. 1 Link to comment Share on other sites More sharing options...
merciful Posted March 2, 2016 Share Posted March 2, 2016 Добрый день, Спасибо большое за подсказки выше, долго искал как сделать авторизацию на сайте (через логин на форуме). Все заработало, столкнулся только с одной проблемой, выкидывает из сессии (иногда). Стоит только вернуться на форум, как снова и на сайте все ок. Использую код: <?php require_once 'forum/init.php'; /* Инициализируем систему */ \IPS\Dispatcher\Front::i(); //or \IPS\Dispatcher\Build::i(); /* Получаем объект с данными о текущем пользователе */ $member = \IPS\Member::loggedIn(); Проверка, зарегистрирован пользователь или нет: if ($member->member_id) { форма с имением и выход. } Link to comment Share on other sites More sharing options...
siv1987 Posted March 4, 2016 Share Posted March 4, 2016 /* Инициализируем систему */\IPS\Dispatcher\Front::i(); //\IPS\Dispatcher\Build::i();Кстати да, если нужен фреймворк форума именно как api, то лучше использовать для инициализации класс Build, или даже External. Front предназначен для публичной части форума с загрузкой css и js файлов и всякими проверками и ошибками, что в случае api для отдельного приложения не совсем желательно. Front имеет смысл использовать когда пишете в оболочки форума. И без вызова init(), этот метод вызывается автоматически из i(). столкнулся только с одной проблемой, выкидывает из сессии (иногда)Смотрите кукисы. В частности для повторной аутентификации после истечения сессии - pass_hash и member_id. 2 Link to comment Share on other sites More sharing options...
Dmitriy427 Posted March 5, 2016 Share Posted March 5, 2016 По части проверок "Front" ограничивает только метод вывода данных, темплейты, скрипты и стили автоматом не подключаются, это уже "Controller". Что до API, он сильно сужает возможности работы с фреймворком. 1 Link to comment Share on other sites More sharing options...
Iluha32 Posted January 5, 2017 Share Posted January 5, 2017 Добрый вечер, использовал данный код: <?php require_once './../forum.x.ru/init.php'; \IPS\Dispatcher\Build::i(); $member = \IPS\Member::loggedIn(); echo var_dump( $member ); ?>И получил это: object(IPS\Member)#49 (29) { ["_followData"]=> NULL ["_previousPhotoType":protected]=> NULL ["_group"]=> NULL ["restrictions":protected]=> NULL ["modPermissions":protected]=> NULL ["calculatedLanguageId":protected]=> NULL ["markers"]=> array(0) { } ["markersResetTimes":protected]=> array(0) { } ["haveAllMarkers":protected]=> bool(false) ["defaultStreamId":protected]=> bool(false) ["changedCustomFields"]=> array(0) { } ["previousName":protected]=> NULL ["_groups":protected]=> NULL ["_socialGroups":protected]=> NULL ["sessionData":protected]=> NULL ["_lang":protected]=> NULL ["_url":protected]=> NULL ["profileFields"]=> NULL ["_reputationData":protected]=> NULL ["_reputationLastDayWon":protected]=> NULL ["_reputationDaysWonCount":protected]=> NULL ["_following":protected]=> array(0) { } ["reportCount":protected]=> NULL ["ignorePreferences":protected]=> NULL ["_ppdLimit":protected]=> NULL ["_data":protected]=> array(14) { ["member_group_id"]=> int(2) ["mgroup_others"]=> string(0) "" ["joined"]=> int(1483646932) ["ip_address"]=> string(13) "172.68.10.236" ["timezone"]=> string(3) "UTC" ["allow_admin_mails"]=> int(1) ["pp_photo_type"]=> string(0) "" ["member_posts"]=> int(0) ["pp_main_photo"]=> NULL ["pp_thumb_photo"]=> NULL ["failed_logins"]=> NULL ["pp_reputation_points"]=> int(0) ["signature"]=> string(0) "" ["auto_track"]=> string(47) "{"content":0,"comments":0,"method":"immediate"}" } ["_new":protected]=> bool(true) ["changed"]=> array(8) { ["member_group_id"]=> int(2) ["mgroup_others"]=> string(0) "" ["joined"]=> int(1483646932) ["ip_address"]=> string(13) "172.68.10.236" ["timezone"]=> string(3) "UTC" ["allow_admin_mails"]=> int(1) ["pp_photo_type"]=> string(0) "" ["member_posts"]=> int(0) } ["skipCloneDuplication"]=> bool(false) } Собственно вопрос, а как получить member_id и т.п.? Link to comment Share on other sites More sharing options...
siv1987 Posted January 5, 2017 Share Posted January 5, 2017 Так вы уже получили данные текущего пользователя в объекте $member. Обращайтесь к данным пользователя как к обычным свойствам объекта - $member->member_id и тп. 1 Link to comment Share on other sites More sharing options...
Iluha32 Posted January 7, 2017 Share Posted January 7, 2017 (edited) Почему-то не срабатывает, он не видит эти данные. Я залил файл test.php на свой сайт по адресу: test.x.ru/test.php, внутри содержится код: <?php require_once 'forum.x.ru/init.php'; /* Инициализируем систему */ \IPS\Dispatcher\Build::i(); //or \IPS\Dispatcher\Build::i(); /* Получаем объект с данными о текущем пользователе */ $member = \IPS\Member::loggedIn(); var_dump($member); При вызове скрипта я получаю следующие: object(IPS\Member)#48 (29) { } И ещё залил файл test.php по адресу https://forum.x.ru/test.php, содержимое следующие: (файл лежит в директории с форумом IPB 4.1.17.1 версии) <?php require_once 'init.php'; /* Инициализируем систему */ \IPS\Dispatcher\Build::i(); //or \IPS\Dispatcher\Build::i(); /* Получаем объект с данными о текущем пользователе */ $member = \IPS\Member::loggedIn(); var_dump($member); И выводит он уже совсем другое: object(IPS\Member)#48 (29) { } 1 Так вот вопрос, как получать эти же самые данные в 1 случае? Edited January 7, 2017 by siv1987 Не нужно приводить портянки кода Link to comment Share on other sites More sharing options...
siv1987 Posted January 7, 2017 Share Posted January 7, 2017 Я залил файл test.php на свой сайт по адресу: test.x.ru/У вас разные домены. Чтобы получить данные авторизованого пользователя с forum.x.ru на домене test.x.ru, куки должны быть глобальными. В противном случае они доступны только на устанавливаемом домене. В constants.php, в папке форума добавить define( 'COOKIE_DOMAIN', '.x.ru' );Где x.ru основной домен второго уровня. Link to comment Share on other sites More sharing options...
Iluha32 Posted January 7, 2017 Share Posted January 7, 2017 (edited) Создал файл constants.php в папке forum.x.ru Добавил содержимое: <?php define( 'COOKIE_DOMAIN', '.x.ru' ); ?> Почему-то ничего не изменилось( Edited January 7, 2017 by Iluha32 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now