Application utilisant les données de session PhpBB - impossible d'utiliser le code abrégé

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

  •  07-07-2019
  •  | 
  •  

Question

J'ai déjà construit des applications Web qui utilisaient une session phpBB et des données utilisateur. La démarche courante consiste à utiliser un code comme celui-ci:

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

Cependant, en incluant common.php , j'apporte un foutu chargement d'autres méthodes qui s'exécutent dans d'autres méthodes que j'ai configurées.

Dans mon exemple, j'exécute l'application à l'aide de CodeIgniter, qui possède déjà un " redirect " méthode. Cette question devrait s’appliquer à toute personne disposant de méthodes prédéfinies pouvant s’intégrer aux méthodes phpBB.

En gros, tout ce que j'ai à faire, c'est:

  1. Assurez-vous que l'utilisateur est connecté $ user- > data [nom d'utilisateur] == Anonyme
  2. Utiliser les données de '$ user- > data' telles que l'ID de l'utilisateur, le pseudonyme, etc.

Puis-je récupérer le tableau $ user- & data et le sauvegarder d'une manière ou d'une autre dans ma propre session? Quelqu'un a-t-il des idées à ce sujet? Merci d'avance!

Était-ce utile?

La solution

Vous avez rencontré la principale raison pour laquelle je déteste les montures d'image. Vous ne savez jamais exactement ce qui est inclus. Surtout quand le code n'est pas orienté objet. (Bien mieux si votre fonction appartient à des objets plutôt que de flotter librement dans un espace global.)

En supposant que votre code dispose déjà d'un gestionnaire de session défini, rien ne vous empêche d'utiliser les commandes de session habituelles.

par exemple: $ _SESSION ['user_data_array'] = $ user- > data;

puis, plus tard, en utilisant les données de session

$ data = $ _SESSION ['user_data_array'];

Lorsqu'un gestionnaire de session est écrit, il remplace le gestionnaire de session actuel. (Je suppose que cela a été fait pour que la session soit stockée dans la base de données plutôt que sur le serveur.)

S'il n'a pas été remplacé, vous pouvez toujours utiliser le gestionnaire de session par défaut de PHP. Gardez toujours à l'esprit que les détails de la session sont enregistrés dans un dossier du serveur Web actuel. Ainsi, si votre application est exécutée sur plusieurs serveurs, les données de session ne seront pas disponibles si l'utilisateur est servi par un serveur différent lors d'une visite ultérieure. (d'où la nécessité d'écrire des gestionnaires de session pour préserver les données de session entre plusieurs serveurs.)

Autres conseils

phpBB a changé l'algorithme de validation du mot de passe stocké dans la base de données de la version 2.x à 3.0. (Avant, ce n’était qu’une fonction MD5.) Mais si vous pouvez trouver leur URL semi-SDK (ne l’avez pas sous la main), il y a des commentaires sur la façon d’utiliser leur vérification d’utilisateur à un niveau d’abstraction supérieur à celui que vous décrivez. .

Il s'agit d'un cas où, si vous voulez exploiter leur ressource, vous devez le faire à leur manière (ce qui dans ce cas est plus explicite qu'il ne l'était auparavant).

Je suis d'accord que c'est une décision risquée de toute façon; d’autant plus que phpBB n’a pas un bilan particulièrement admirable pour la qualité de son design.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top