2009-07-10 12 views
0

J'ai une application Mysql/PHP. Je veux le vendre SAS. Je pense à une société d'hébergement qui a plusieurs bases de données disponibles. Je veux une page où ils se connectent et je les emmène dans leur base de données. J'aurai beaucoup de bases de données avec une structure identique. J'ai besoin d'un moyen de les changer dans ce dossier (je peux modifier un peu de code pour eux comme css) et exploiter leur base de données. Je pourrais utiliser une table principale pour les connexions mais comment se connecter à leur base de données? Je suis préoccupé par la sécurité. Exemple: Disons que j'ai 3 clients. A B C J'ai mis en place 3 dossiers sur un serveur apache, y ai copié du code, j'ai défini des noms de base de données uniques comme new_db_a, new_db_b, new_db_c. Maintenant, si je le fais dans une variable de la mémoire quand un se connecte il va le prendre à sa place. Il peut voir l'URL et pourrait facilement substituer une autre lettre et exécuter une autre base de données d'entreprises. Je suis prêt à utiliser Perl, PHP ou autre pour le faire. Quel est le meilleur moyen de le faire?Configuration de plusieurs bases de données mysql

+0

J'ai repensé votre question de "sas" à "saas", puisque je pense que vous parlez de Software as a Service (SaaS). S'il vous plaît laissez un commentaire si je me trompe à ce sujet, et je vais le changer. –

Répondre

0

Ceci est un problème d'abstraction classique. Fondamentalement, vous devez extraire le processus de sélection de la base de données non seulement de l'application, mais aussi de l'écran de sélection. Pensez-y à des termes «d'espace de problème». Chaque application a son propre (c'est-à-dire sa base de données) et vous en avez un de plus, qui est le système de connexion du client. Il n'y a rien de mal à utiliser une autre base de données différente pour cela. Associé à chaque connexion sera l'information de connexion à la base de données. Cela signifie que vous pouvez stocker les informations de la base de données dans la session PHP avec le fait que l'utilisateur est connecté (et avec qui il est connecté). Maintenant, votre autre application doit apprendre à sa couche de base de données [1] comment rechercher les informations de base de données dans la session. En effet, si vous stockez non seulement le nom de la base de données, mais aussi le nom du serveur, un login et un mot de passe, vous avez la possibilité de mettre des clients sur le même serveur de base de données. correct (pas dur). Cependant, la plus grosse mouche dans cette pommade est que si l'application sélectionnée décide de prendre le contrôle des informations de la session PHP elle-même. Il y a plusieurs façons de résoudre cela. On lui demande de copier dans sa propre session ce dont il a besoin pour se connecter à la bonne base de données. Une seconde est pour la session de sélection de faire sa gestion de session séparément et éventuellement manuellement. Mais ne stockez pas les informations de la base de données dans un cookie. Non seulement cela peut être changé par un utilisateur déterminé, mais vous cédez la sécurité à un emplacement non sécurisé - le navigateur.

[1] Vous avez une couche de base de données appropriée, n'est-ce pas? Et par là je veux dire que vous avez tous vos appels mysql_query() derrière un gestionnaire, soit sur mesure ou quelque chose comme PDO.

Questions connexes