2009-01-22 6 views
0

J'ai un site Web que j'ai intégré à un logiciel de forum populaire (phpBB). Je l'ai configuré pour que les utilisateurs qui se connectent automatiquement au site principal soient également connectés au logiciel du forum. Je le fais en m'authentifiant à travers l'API du forum en même temps. Lorsqu'un utilisateur s'inscrit sur le site, une entrée est ajoutée à la base de données du site principal et une entrée est ajoutée à la base de données des utilisateurs du forum (à l'aide de l'API du forum).Motifs de réplication des données utilisateur d'un logiciel à un autre

L'identifiant principal de la table utilisateur du forum est stocké dans une colonne de la base de données de l'utilisateur du site principal. Ceci est enregistré au moment de l'enregistrement: le processus d'enregistrement crée d'abord un utilisateur du forum, puis renvoie l'identifiant à la requête qui crée l'utilisateur sur le site principal. Lorsqu'un utilisateur se connecte, s'il s'authentifie auprès du site principal, cet ID est extrait et transmis à l'API de connexion au forum pour se connecter à la bonne personne. Cependant, une chose bizarre semble se produire de manière aléatoire: une personne sur 30 ou 40 qui enregistre se retrouve avec un identifiant d'utilisateur de forum qui n'est pas le leur dans la table d'utilisateur du site principal. Je sais comment chercher ces problèmes et les résoudre au cas par cas et avoir des scripts en place pour le faire, mais cela semble être plus un pansement, pas une solution.

Est-ce un problème courant lors de la liaison de données de ce type, ou cela semble-t-il être quelque chose de plus spécifique au logiciel? En raison du caractère aléatoire de ce problème, il a été difficile à déboguer.

Répondre

1

Je suspecterais la gestion de session. Est-ce que vous réutilisez intentionnellement ou involontairement des identifiants de session?

+0

Non, je ne le pense pas de toute façon. Je ne vois pas comment cela ferait que l'identifiant de l'utilisateur principal dans la table du site principal soit changé pour la clé de quelqu'un d'autre lors de l'enregistrement, cependant. À ce stade de l'enregistrement, aucune session n'existe. –

+0

phpbb utilise un numéro de session dans un cookie pour déterminer si je suis déjà connecté. Ainsi, le # de session dans mon cookie est identifié avec une session d'hôte qui est assignée à un moi. Si le numéro de session est réutilisé et associé à un nouvel utilisateur, mon ancien cookie soumet cette session #, et phpbb pense que je suis le nouvel utilisateur. – dkretz

0

Je l'ai fait quelque chose de similaire avec vbulletin, en utilisant directement la base de données MySQL du forum pour autheticate le site principal, et d'autres sites (ils sont tous sur la même machine) ...

Dans votre cas, J'ajouterais les champs spécifiques au site qui ne sont pas dans la base de données phpBB dans la base de données du site, et le lierais à phpbb par user_id ... Il pourrait s'agir d'un formulaire sur les sites principaux insérés dans les deux bases de données db, d'autres dans phpBB db - avec d'autres champs de privilèges), j'utiliserais mon propre captcha non standard comme générer une image déformée "what is x + y" avec x et y comme nombres aléatoires et + peut être remplacé par d'autres opérations, ou une image de "tapez le mot ORANGE", ou "tapez à nouveau votre nom d'utilisateur"

Je voudrais désactiver l'enregistrement phpBB par défaut ... il ya tellement de robots qui savent comment l'utiliser ...

Ceci vous garantirait une source pour l'information, et vous remplissez toutes les informations à la fois.

Questions connexes