Jump to content

Вывод данных


avgaz
 Share

Recommended Posts

Здравствуйте, подскажите как реализовать вывод к примеру имени пользователя, id, мыла и другой ифны автоматизированного пользователя, на отдельную от форума страницу?

К примеру есть страница start.php нужно что бы при её просмотре пользователю вывелся его логин, id, группа, мыло.

Link to comment
Share on other sites

Спасибо это то что нужно, но остались ещё вопросы.

Как достать ключ логина, то есть к примеру при ссылке Выход используется ключ например logout/?csrfKey=0f8ce0ac1a3ee2cfd1523c2f68a50307 вот как получить этот ключ то же на отдельной странице?

Где храниятся названия разделов и их описание? в таблице forums_forums их нет, то же самое с группами, нашёл их название в таблице core_sys_lang_words но не могу понять по какому принципу сделать выборку из этой таблицы, то есть к примеру у группы значение id равно 4 как вывести название группы из этой таблицы?

Link to comment
Share on other sites

Где храниятся названия разделов и их описание? в таблице forums_forums их нет, то же самое с группами, нашёл их название в таблице core_sys_lang_words но не могу понять по какому принципу сделать выборку из этой таблицы, то есть к примеру у группы значение id равно 4 как вывести название группы из этой таблицы?

Зачем вообще туда лезть?

 

Работа с группами:

\IPS\Member\Group::groups()

 

Работа с форумами:

\IPS\forums\Forum::roots()

Link to comment
Share on other sites

Это не то, с помощью этого можно вывести все из таблицы групп, но кроме названий групп которых там нет, то же самое и с форумами

Link to comment
Share on other sites

	$groupsNames = array();

foreach	(\IPS\Member\Group::groups() as $group)
{
	$groupsNames[] = $group->name;
}

$groupsAsString = implode(', ', $groupsNames);
\IPS\Member::loggedIn()->language()->parseOutputForDisplay( $groupsAsString );

print $groupsAsString;

 

Мультиязычно.

  • Upvote 1
Link to comment
Share on other sites

  • 1 month later...

Добрый день,

 

Спасибо большое за подсказки выше, долго искал как сделать авторизацию на сайте (через логин на форуме). Все заработало, столкнулся только с одной проблемой, выкидывает из сессии (иногда). Стоит только вернуться на форум, как снова и на сайте все ок.

 

Использую код:

<?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

/* Инициализируем систему */

\IPS\Dispatcher\Front::i(); //\IPS\Dispatcher\Build::i();

Кстати да, если нужен фреймворк форума именно как api, то лучше использовать для инициализации класс Build, или даже External. Front предназначен для публичной части форума с загрузкой css и js файлов и всякими проверками и ошибками, что в случае api для отдельного приложения не совсем желательно. Front имеет смысл использовать когда пишете в оболочки форума. И без вызова init(), этот метод вызывается автоматически из i().

 

 

столкнулся только с одной проблемой, выкидывает из сессии (иногда)

Смотрите кукисы. В частности для повторной аутентификации после истечения сессии - pass_hash и member_id.

  • Upvote 2
Link to comment
Share on other sites

По части проверок "Front" ограничивает только метод вывода данных, темплейты, скрипты и стили автоматом не подключаются, это уже "Controller". Что до API, он сильно сужает возможности работы с фреймворком.

  • Upvote 1
Link to comment
Share on other sites

  • 10 months later...

Добрый вечер, использовал данный код:

 

<?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

Так вы уже получили данные текущего пользователя в объекте $member. Обращайтесь к данным пользователя как к обычным свойствам объекта - $member->member_id и тп.

  • Upvote 1
Link to comment
Share on other sites

Почему-то не срабатывает, он не видит эти данные. Я залил файл 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 by siv1987
Не нужно приводить портянки кода
Link to comment
Share on other sites

Я залил файл 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

Создал файл constants.php в папке forum.x.ru

 

Добавил содержимое:

 

<?php define( 'COOKIE_DOMAIN', '.x.ru' ); ?>

 

Почему-то ничего не изменилось(

Edited by Iluha32
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...