Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
avgaz

Вывод данных

Рекомендованные сообщения

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

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

Поделиться сообщением


Ссылка на сообщение
<?php

define( 'ENFORCE_ACCESS', TRUE );

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

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

?>

Поделиться сообщением


Ссылка на сообщение

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

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

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

Поделиться сообщением


Ссылка на сообщение

csrf ключ:

 

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

Поделиться сообщением


Ссылка на сообщение

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

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

 

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

\IPS\Member\Group::groups()

 

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

\IPS\forums\Forum::roots()

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

	$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

Поделиться сообщением


Ссылка на сообщение

Добрый день,

 

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

 

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

<?php

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

 

 

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

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

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
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 случае?

Изменено пользователем siv1987
Не нужно приводить портянки кода

Поделиться сообщением


Ссылка на сообщение

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

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
01/07/17 19:27 (изменено)

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

 

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

 

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

 

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

Изменено пользователем Iluha32

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...