Приложение, использующее данные сеанса phpBB - не может использовать короткий код

StackOverflow https://stackoverflow.com/questions/274496

  •  07-07-2019
  •  | 
  •  

Вопрос

Я уже создавал веб-приложения, которые используют сеанс phpBB и пользовательские данные.Обычным ходом является использование кода, подобного этому:

define('IN_PHPBB', true);
//replace $phpbb_root_path with path to your forum
$phpbb_root_path = '../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

Однако, включив common.php, я привожу с собой кучу других методов, которые работают с другими методами, которые я настроил.

В моем примере я запускаю приложение с помощью CodeIgniter, у которого уже есть метод "перенаправления".Этот вопрос должен относиться ко всем, у кого есть готовые методы, которые могут работать с методами phpBB.

По сути, все, что мне нужно сделать, это:

  1. Убедитесь, что пользователь вошел в систему $user->data[username] == Anonymous
  2. Используйте данные из "$user-> data", такие как идентификатор пользователя, имя экрана и т.д.

Могу ли я взять $user->data массив, и каким-то образом сохранить его в моем собственном сеансе?У кого-нибудь есть какие-нибудь идеи по этому поводу?Заранее спасибо!

Это было полезно?

Решение

Вы столкнулись с основной причиной, по которой я ненавижу фреймворки.Вы никогда не знаете точно, что именно включено.Особенно, когда код не является объектно-ориентированным.(гораздо лучше, если ваша функция принадлежит объектам, а не свободно плавает в глобальном пространстве.)

Предполагая, что в вашем коде уже есть определенный обработчик сеанса, ничто не мешает вам использовать обычные команды сеанса.

например:$_SESSION['user_data_array'] = $user->данные ;

затем позже с использованием данных сеанса

$data = $_SESSION['user_data_array'];

Когда записывается обработчик сеанса, он заменяет текущий обработчик сеанса.(Я предполагаю, что это было сделано для того, чтобы сеанс хранился в базе данных, а не на сервере.)

Если он не был заменен, то вы все равно можете использовать обработчик сеанса PHP по умолчанию..Всегда имейте в виду, что сведения о сеансе сохраняются в папке на текущем веб-сервере.Таким образом, если ваше приложение запущено на нескольких серверах, данные сеанса будут недоступны, если пользователь будет обслуживаться другим сервером при последующем посещении.(отсюда необходимость написания обработчиков сеанса для сохранения данных сеанса между несколькими серверами.)

Другие советы

phpBB изменил алгоритм проверки пароля, хранящегося в базе данных, с версии 2.x на 3.0.(Раньше это была просто функция MD5.) Но если вы можете найти их URL-адрес semi-SDK (у вас его нет под рукой), там есть публикации о том, как использовать их проверку пользователя на более высоком уровне абстракции, чем вы описываете.

Это тот случай, когда, если вы собираетесь использовать их ресурс, вам нужно сделать это их способом (который в данном случае более явный, чем раньше).

Я согласен, что это рискованное решение в любом случае;тем более что phpBB не имеет особо выдающихся показателей качества дизайна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top