Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
avgaz

Вывод данных

Recommended Posts

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

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

Share this post


Link to post
<?php

define( 'ENFORCE_ACCESS', TRUE );

require_once 'init.php';
\IPS\Dispatcher\External::i();

$member = \IPS\Member::loggedIn();
var_dump( $member );

?>

Share this post


Link to post

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

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

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

Share this post


Link to post

csrf ключ:

 

\IPS\Session::i()->csrfKey

Share this post


Link to post

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

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

 

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

\IPS\Member\Group::groups()

 

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

\IPS\forums\Forum::roots()

Share this post


Link to post

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

Share this post


Link to post

	$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

Share this post


Link to post

Добрый день,

 

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

 

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

<?php

require_once 'forum/init.php';
/* Инициализируем систему */
\IPS\Dispatcher\Front::i(); //or \IPS\Dispatcher\Build::i();

/* Получаем объект с данными о текущем пользователе */
$member = \IPS\Member::loggedIn(); 

 

Проверка, зарегистрирован пользователь или нет:

if ($member->member_id) 
{
 форма с имением и выход.
}

Share this post


Link to post

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

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

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

 

 

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

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

  • Upvote 2

Share this post


Link to post

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

  • Upvote 1

Share this post


Link to post

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

 

<?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 и т.п.?

Share this post


Link to post

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

  • Upvote 1

Share this post


Link to post

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

Share this post


Link to post

Я залил файл test.php на свой сайт по адресу: test.x.ru/

У вас разные домены. Чтобы получить данные авторизованого пользователя с forum.x.ru на домене test.x.ru, куки должны быть глобальными. В противном случае они доступны только на устанавливаемом домене.

 

В constants.php, в папке форума добавить

 

define( 'COOKIE_DOMAIN', '.x.ru' );

Где x.ru основной домен второго уровня.

Share this post


Link to post

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

 

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

 

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

 

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

Edited by Iluha32

Share this post


Link to post

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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...