Довольно часто возникает необходимость в интеграции phpBB с другой системой, например с Drupal или Joomla. В этом случае Вам повезло — готовые модули для использования единой базы пользователей c phpBB 3 в обоих системах уже созданы.
Если же Вам нужно сделать единую авторизацию с более экзотической системой, то придется все делать самому. Ну или заказать разработку у специалистов.
К счастью, разработчики phpBB предусмотрели эту проблему, и заранее сделали механизм авторизации легко расширяемым. В этой статье мы попробуем написать свой простой плагин авторизации.
Запрет регистрации
Логично предположить, что перед активацией нашего модуля авторизации мы должны запретить регистрацию в самом phpBB. Создавая плагин авторизации заранее предпологается, что пользователи будут регистрироваться в другом месте.
Для этого в администраторском аккаунте перейдите на вкладку Общие, и в левом меню выберите “Регистрация пользователей”. Далее отключаем регистрацию:
Все плагины авторизации расположены в директории includes/auth/. Там уже есть несколько готовых плагинов.
auth_db — плагин, включенный по умолчанию. Он отвечает за авторизацию через базу данных phpBB.
auth_apache — плагин, соответственно для авторизации использующий встроенные средства веб-сервера Apache.
auth_ldap — плагин, использующий для аутентификации сетевой протокол доступа к каталогам LDAP
Пусть наш плагин будет называться auth_simple. Создайте файл auth_simple.php в директории includes/auth с таким содержимым:
< ?php
/**
*
* Пример плагина авторизации для phpBB3
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
/**
* Функция, отвечающая за авторизацию.
*/
function login_simple(&$username, &$password)
{
// Запрещаем пустой пароль.
if (!$password)
{
return array(
'status' => LOGIN_ERROR_PASSWORD,
'error_msg' => 'NO_PASSWORD_SUPPLIED',
'user_row' => array('user_id' => ANONYMOUS),
);
}
// Запрещаем пустое имя пользователя.
if (!$username)
{
return array(
'status' => LOGIN_ERROR_USERNAME,
'error_msg' => 'LOGIN_ERROR_USERNAME',
'user_row' => array('user_id' => ANONYMOUS),
);
}
// Обычная проверка на правильность.
if ( ("test" === $username) && ("test" === $password) )
{
// Сообщаем, что авторизация прошла успешно.
return array(
'status' => LOGIN_SUCCESS,
'error_msg' => false,
'user_row' => array(
"username" => $username, // Отображаемое имя пользователя
"user_password" => phpbb_hash($password), // phpbb-хеш пароля
"user_email" => "test@v673.com", // E-mail пользователя, если существует
"user_type" => USER_NORMAL // Тип пользователя, объявленный в constants.php
),
);
}
// Возвращаем ошибку авторизации.
return array(
'status' => LOGIN_ERROR_PASSWORD,
'error_msg' => 'LOGIN_ERROR_PASSWORD',
'user_row' => array('user_id' => ANONYMOUS),
);
}
?>
Теперь необходимо активировать наш плагин авторизации. Для этого перейдите в вкладку Общие и в левом меню выберите пункт Аутентификация. Выберите наш метод авторизации:


в версии форума 3.4.0 показывает одни каракули, когда захожу в аутентификацию… Так и не разобрался с этой проблемой.
А вы можете написать статью с подробной интеграцией регистрации форума на сайт? Ну чтобы система регистрации была единая… Думаю будет очень полезно для новичков
заранее, спасибо.
по поводу каракулей, стоит проверить кодировку файлов
я постараюсь выделить время и более подробно написать в ближайшее время об интеграции
Благодарю.
Кодировку менял. Не помогает.
[phpBB Debug] PHP Notice: in file /adm/index.php on line 150: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
[phpBB Debug] PHP Notice: in file /adm/index.php on line 152: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
[phpBB Debug] PHP Notice: in file /adm/index.php on line 153: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
[phpBB Debug] PHP Notice: in file /adm/index.php on line 154: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
Вот список ошибок… не проходит модификация шапки как я понял…
[phpBB Debug] PHP Notice: in file /adm/index.php on line 150: Cannot modify header information — headers already sent by (output started at /includes/auth/auth_simple.php:27)
говорит о том что используется механизм сессий, где то ошибка, почитай как с ним работать там все просто, session_start() и т.п.
чтобы обойти ошибку используй буферизацию вывода (ob_start(), ob_end_flush());