Самый простой способ - создать оболочку MEX, которая хранит экземпляр объекта класса, и отправить вызов этому двоичному файлу MEX. Я создал библиотеку для тех, кто пытается создать MEX-оболочку на C ++.
https://github.com/kyamagu/mexplus
быстрый фрагмент.
// C++ class to be wrapped.
class Database;
// Instance session storage.
template class mexplus::Session;
// Constructor.
MEX_DEFINE(new) (int nlhs, mxArray* plhs[],
int nrhs, const mxArray* prhs[]) {
InputArguments input(nrhs, prhs, 1);
OutputArguments output(nlhs, plhs, 1);
output.set(0, Session::create(
new Database(input.get(0))));
}
// Destructor.
MEX_DEFINE(delete) (int nlhs, mxArray* plhs[],
int nrhs, const mxArray* prhs[]) {
InputArguments input(nrhs, prhs, 1);
OutputArguments output(nlhs, plhs, 0);
Session::destroy(input.get(0));
}
// Member method.
MEX_DEFINE(query) (int nlhs, mxArray* plhs[],
int nrhs, const mxArray* prhs[]) {
InputArguments input(nrhs, prhs, 2);
OutputArguments output(nlhs, plhs, 1);
const Database& database = Session::getConst(input.get(0));
output.set(0, database.query(input.get(1)));
}
// And so on...
MEX_DISPATCH
Это старый вопрос, так что я уверен, что вы уже что-нибудь придумали, но если вам понадобится рефакторинг в будущем, это вполне возможно с помощью плагинов аутентификации в phpBB3:
http://wiki.phpbb.com/Authentication_plugins
Я сейчас работаю над одним из них, где phpBB - "вторичная" система, и он работает довольно хорошо.
Я интегрировал phpBB с сайтом прежде, однако я использовал таблицу системы/пользователей входа в систему phpBB в качестве основной, как Вы сказали. Так как phpBB является симпатичным усовершенствованным программным обеспечением форума, это был бы довольно трудоемкий проект изменить его пользователя и систему входа в систему полностью.
, Когда я должен был использовать вход в систему сайта в качестве основного, я использовал PunBB. Это был путь, более простой изменить PunBB.
, Если абсолютно необходимо использовать собственный вход в систему в качестве основного, и phpBB, затем я соглашаюсь с Вами в этом, самый легкий путь состоял бы в том, чтобы сохранить таблицы синхронизируемыми и назвать обоих сценариями входа в систему, когда кто-то входит в систему.
при вставке данных в phpBB пользовательская таблица довольно проста. Каждая запись имеет основную информацию для пользователя, и если у Вас есть пользовательские поля для профилей пользователей, они входят profile_fields
и profile_fields_data
таблицы.
Одна хитрая вещь состоит в том, как phpBB шифрует пароли пользователя. Я думаю, что необходимо использовать функцию phpBB, вызванную phpbb_hash($password)
, чтобы сделать это. Это объявляется в файле phpbb/includes/functions.php
Для phpBB кода для входа, см. funciton login_box в файле phpbb/includes/functions.php
Я только что работал над этой задачей сегодня, после некоторого расследования, внедрившего плагин аутентификации Вот хороший пример Получение phpBB принять сеансы Django
Можно использовать ниже для входа в систему в phpBB:
$result=$auth->login($username, $password);
if ($result['status'] == LOGIN_SUCCESS) {
echo "You're logged in";
} else {
echo $user->lang[$result['error_msg']];
}