Pergunta

Eu construí aplicações web antes que utilizam sessão phpBB, e dados do usuário. O movimento comum é usar um código como este:

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();

No entanto, incluindo common.php, trago ao longo de uma porcaria de carga de outros métodos que são executados em outros métodos que eu tenho configuração.

No meu exemplo, eu estou executando o aplicativo usando CodeIgniter, que já tem um método "redirecionamento". Esta questão deve aplicar-se a qualquer pessoa que tenha métodos pré-construídos que podem correr para os métodos phpBB.

Basicamente, tudo necessidade I a fazer é:

  1. Verifique se o usuário está logado $user->data[username] == Anonymous
  2. Utilizar dados de '$ user-> dados', como ID do usuário, screenname, etc.

Eu poderia agarrar a matriz $user->data, e de alguma forma salve-o em minha própria sessão? Alguém tem alguma idéia sobre isso? Agradecemos antecipadamente!

Foi útil?

Solução

Você correr para a principal razão que eu odeio obras de quadros. Você nunca sabe exatamente o que está sendo incluído. Especialmente quando o código não é orientado ao objecto. (Muito melhor se a sua função pertencem aos objetos, ao invés de livre flutuação em um espaço global.)

Assumindo que o seu código tem um manipulador de sessão definido já no lugar, não há nada que você parar de usar os comandos Ordinário de Sessões.

por exemplo: $ _SESSION [ 'user_data_array'] = $ user-> dados;

, posteriormente, usando teh dados da sessão

$ data = $ _SESSION [ 'user_data_array'];

Quando um manipulador de sessão está escrito, ele substitui o manipulador de sessão atual. (Presumo que tem sido feito para que a sessão é armazenado no banco de dados, em vez de no servidor.)

Se não tiver ser substituído, então você ainda pode usar o manipulador de sessão padrão do PHP .. urso sempre em mente que os detalhes da sessão são salvos em uma pasta no servidor web atual. Portanto, se seu aplicativo é executado em vários servidores, os dados da sessão não estará disponível se o usuário está sendo servido por um servidor diferente em uma visita posterior. (Daí a necessidade de escrever manipuladores de sessão para preservar os dados da sessão entre vários servidores.)

Outras dicas

phpBB mudou o algoritmo para validar a senha armazenada no banco de dados da versão 2.x para o 3.0. (Ela costumava ser apenas uma função MD5.) Mas se você pode encontrar o seu url semi-SDK (não tê-lo na mão), há postagens lá sobre como usar sua verificação do usuário em um nível mais alto de abstração do que você descrever .

Este é um caso em que, se você estiver indo para bater o seu recurso, você precisa fazê-lo seu caminho (que neste caso é mais explícito do que costumava ser.)

Concordo que é uma decisão arriscada de qualquer forma; especialmente desde phpBB não tem um registro particularmente admirável para a qualidade do projeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top