avgaz 8 01/02/16 20:01 Здравствуйте, подскажите как реализовать вывод к примеру имени пользователя, id, мыла и другой ифны автоматизированного пользователя, на отдельную от форума страницу?К примеру есть страница start.php нужно что бы при её просмотре пользователю вывелся его логин, id, группа, мыло. Поделиться сообщением Ссылка на сообщение
siv1987 2628 01/02/16 20:16 <?php define( 'ENFORCE_ACCESS', TRUE ); require_once 'init.php'; \IPS\Dispatcher\External::i(); $member = \IPS\Member::loggedIn(); var_dump( $member ); ?> Поделиться сообщением Ссылка на сообщение
avgaz 8 01/04/16 13:01 Спасибо это то что нужно, но остались ещё вопросы.Как достать ключ логина, то есть к примеру при ссылке Выход используется ключ например logout/?csrfKey=0f8ce0ac1a3ee2cfd1523c2f68a50307 вот как получить этот ключ то же на отдельной странице?Где храниятся названия разделов и их описание? в таблице forums_forums их нет, то же самое с группами, нашёл их название в таблице core_sys_lang_words но не могу понять по какому принципу сделать выборку из этой таблицы, то есть к примеру у группы значение id равно 4 как вывести название группы из этой таблицы? Поделиться сообщением Ссылка на сообщение
siv1987 2628 01/04/16 16:21 csrf ключ: \IPS\Session::i()->csrfKey Поделиться сообщением Ссылка на сообщение
newbie 1723 01/05/16 08:00 Где храниятся названия разделов и их описание? в таблице forums_forums их нет, то же самое с группами, нашёл их название в таблице core_sys_lang_words но не могу понять по какому принципу сделать выборку из этой таблицы, то есть к примеру у группы значение id равно 4 как вывести название группы из этой таблицы? Зачем вообще туда лезть? Работа с группами:\IPS\Member\Group::groups() Работа с форумами:\IPS\forums\Forum::roots() Поделиться сообщением Ссылка на сообщение
avgaz 8 01/05/16 15:37 Это не то, с помощью этого можно вывести все из таблицы групп, но кроме названий групп которых там нет, то же самое и с форумами Поделиться сообщением Ссылка на сообщение
newbie 1723 01/06/16 10:02 $groupsNames = array(); foreach (\IPS\Member\Group::groups() as $group) { $groupsNames[] = $group->name; } $groupsAsString = implode(', ', $groupsNames); \IPS\Member::loggedIn()->language()->parseOutputForDisplay( $groupsAsString ); print $groupsAsString; Мультиязычно. 1 Поделиться сообщением Ссылка на сообщение
merciful 0 03/02/16 20:24 Добрый день, Спасибо большое за подсказки выше, долго искал как сделать авторизацию на сайте (через логин на форуме). Все заработало, столкнулся только с одной проблемой, выкидывает из сессии (иногда). Стоит только вернуться на форум, как снова и на сайте все ок. Использую код: <?php require_once 'forum/init.php'; /* Инициализируем систему */ \IPS\Dispatcher\Front::i(); //or \IPS\Dispatcher\Build::i(); /* Получаем объект с данными о текущем пользователе */ $member = \IPS\Member::loggedIn(); Проверка, зарегистрирован пользователь или нет: if ($member->member_id) { форма с имением и выход. } Поделиться сообщением Ссылка на сообщение
siv1987 2628 03/04/16 20:35 /* Инициализируем систему */\IPS\Dispatcher\Front::i(); //\IPS\Dispatcher\Build::i();Кстати да, если нужен фреймворк форума именно как api, то лучше использовать для инициализации класс Build, или даже External. Front предназначен для публичной части форума с загрузкой css и js файлов и всякими проверками и ошибками, что в случае api для отдельного приложения не совсем желательно. Front имеет смысл использовать когда пишете в оболочки форума. И без вызова init(), этот метод вызывается автоматически из i(). столкнулся только с одной проблемой, выкидывает из сессии (иногда)Смотрите кукисы. В частности для повторной аутентификации после истечения сессии - pass_hash и member_id. 2 Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 03/05/16 03:21 По части проверок "Front" ограничивает только метод вывода данных, темплейты, скрипты и стили автоматом не подключаются, это уже "Controller". Что до API, он сильно сужает возможности работы с фреймворком. 1 Поделиться сообщением Ссылка на сообщение
Iluha32 0 01/05/17 20:12 Добрый вечер, использовал данный код: <?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 и т.п.? Поделиться сообщением Ссылка на сообщение
siv1987 2628 01/05/17 21:19 Так вы уже получили данные текущего пользователя в объекте $member. Обращайтесь к данным пользователя как к обычным свойствам объекта - $member->member_id и тп. 1 Поделиться сообщением Ссылка на сообщение
Iluha32 0 01/07/17 19:05 (изменено) Почему-то не срабатывает, он не видит эти данные. Я залил файл 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 случае? Изменено 7 января 2017 пользователем siv1987 Не нужно приводить портянки кода Поделиться сообщением Ссылка на сообщение
siv1987 2628 01/07/17 19:12 Я залил файл test.php на свой сайт по адресу: test.x.ru/У вас разные домены. Чтобы получить данные авторизованого пользователя с forum.x.ru на домене test.x.ru, куки должны быть глобальными. В противном случае они доступны только на устанавливаемом домене. В constants.php, в папке форума добавить define( 'COOKIE_DOMAIN', '.x.ru' );Где x.ru основной домен второго уровня. Поделиться сообщением Ссылка на сообщение
Iluha32 0 01/07/17 19:27 (изменено) Создал файл constants.php в папке forum.x.ru Добавил содержимое: <?php define( 'COOKIE_DOMAIN', '.x.ru' ); ?> Почему-то ничего не изменилось( Изменено 7 января 2017 пользователем Iluha32 Поделиться сообщением Ссылка на сообщение