У меня есть IPB, и у меня есть приложение PHP, которое находится за пределами форума ROOT, а также на другом поддомене.
В приложении мне нужно иметь доступ к данным члена, например. количество сообщений, электронная почта и т. д.
У меня последняя версия IPB и PHP 5.6
Я много гуглил для решения и, наконец, нашел это:
Доступ к классам IPB извне с основного сайта
Однако это не сработало вообще. Ошибок нет, только перенаправление на основной URL форума.
У кого-нибудь есть опыт работы с классами IPB и / или это API?
Может ли кто-нибудь помочь мне достичь цели.
Решение, вероятно, всего одна строка кода.
РЕДАКТИРОВАТЬ:
Я нашел работу вокруг, проверьте мой ответ ниже.
Однако я все еще заинтересован в «более хорошем» решении.
После некоторых исследований я настроил перенаправление IPB, поскольку URL-адрес платы не совпадает с текущим URL / поддоменом. (мое дело)
Итак … Есть обходной путь, не очень хороший, но работает, по крайней мере, и решение в одну строку:
<?PHP
$_SERVER['HTTP_HOST_R'] = $_SERVER['HTTP_HOST']; // Keep original info in another index.
$_SERVER['HTTP_HOST'] = "www.your-ipb-forum.com"; // Work-around
$forumPath = '../forum'; //FORUM FOLDER
define( 'IPS_ENFORCE_ACCESS', TRUE ); // Important so it does not redirect to forums
define( 'IPB_THIS_SCRIPT', 'public' );
require_once( $forumPath.'/initdata.php' );
require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );
$ipbRegistry = ipsRegistry::instance();
$ipbRegistry->init();
// Init done
$member = IPSMember::load($memberName, 'all', 'username');
print_r($member); // For demo purposes only
Третья строка — это обходной путь, с которым мы обманываем IPB.
Вторая строка «перемещает» данные $ _SERVER [‘HTTP_HOST’] в $ _SERVER [‘HTTP_HOST_R’], поэтому, если вам нужен текущий (реальный) URL в вашем приложении, вы можете использовать эту переменную вместо этого, потому что HTTP_HOST один изменился. (необходимо для обхода).
Других решений пока нет …