Авторизация пользователей в IPB 3.1.x из своих скриптов

Довольно частое явление, когда вы используете форум ipb, а движок сайта пишете сами. Естественно вы не хотите хранить инфу о юзерах в двух местах: для авторизации на сайте и форуме. Очевидно, лучше использовать внешнюю авторизацию для форума при авторизации на сайте.

К примеру, если вы хотите авторизоваться на форуме через свою форму на сайте. Примерно так это будет:

<form id="login" method="post" action="/forum/index.php?app=core&module=global&section=login&do=process">
<input type="hidden" value="/forum/index.php?/forum/2-forum/" name="referer">
	<div style="padding-bottom:20px;">
		<span style="color:#000;">FORUM</span>
		
	</div>	
	<div style="padding-bottom:20px; vertical-align:middle;">
		<div style="float:left;">LOG</div>
		<div ><input maxlength="39" type="text" name="username" id="username"   class="tbx_login" /></div>
	</div>		
	<div style="padding-bottom:20px;">
		<div style="float:left;">PAS</div>
		<div ><input maxlength="39" type="password" name="password" id="password" class="tbx_login" /></div>
	</div>		
	
	<div style=" margin-right:70px; margin-top:50px;">
		<div style="">
			<input type="submit" id="login_send" name="login_send" value="ENTER" />
		</div>
	</div>
</form>

Ну, тут просто те же идентификаторы используются, что в оригинальной форме авторизации на форуме и идёт переадресация для выполнения на скрипт форума.

Бывает, что вы просто хотите проверить, верные ли данные ввёл юзер. Для этого можно использовать API форума:

//в $f - путь к форуму
require_once($f.'/initdata.php');
require_once( $f.'/admin/sources/base/ipsController.php');
require_once( IPS_ROOT_PATH . '/sources/base/ipsRegistry.php' );
$registry = ipsRegistry::instance();
$registry->init();
require_once($f. '/admin/sources/loginauth/login_core.php' );
$login_core_ = new login_core(ipsRegistry::instance());
$login_core_->authLocal($login, null,$password);

После этого проверяем переменную $login_core_->return_code. Если SUCCESS, то пользователь данные для авторизации ввёл верно.