Авторизация пользователей в IPB 3.1.x из своих скриптов
Довольно частое явление, когда вы используете форум ipb, а движок сайта пишете сами. Естественно вы не хотите хранить инфу о юзерах в двух местах: для авторизации на сайте и форуме. Очевидно, лучше использовать внешнюю авторизацию для форума при авторизации на сайте.
К примеру, если вы хотите авторизоваться на форуме через свою форму на сайте. Примерно так это будет:
<form id="login" method="post" action="/forum/index.php?app=core&module=global§ion=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, то пользователь данные для авторизации ввёл верно.