Авторизация пользователей в 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, то пользователь данные для авторизации ввёл верно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *