IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[MySQL]Conception de connexion a plusieurs bases de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Emyleen
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 151
    Par défaut [MySQL]Conception de connexion a plusieurs bases de données
    Bonjour,

    Le titre n'est pas vraiment explicite je sais, je n'ai pas trouvé mieux.

    Je suis en train de concevoir un site de type "gestion de données commerciale", un front office "catalogue de produit" et un backoffice de gestion du site et des données.

    J'ai un problème de conception au niveau de la connexion aux bases de données.

    Mon site s'adresse à des magasins, chaque magasin comprenant un certains nombre d'utilisateur du site. Lorsqu'un de ces utilisateurs veut se connecter, j'aimerai identifier la base de données à laquelle il veut se connecter mais sans lui demander, juste via son identifiant et son mot de passe.

    C'est là que je bloque.
    Chaque magasin possédant sa propre base de données, j'avais pensé faire une base spécifique à la détection de l'utilisateur qui me renverrait les informations concernant la base de données du magasin à laquelle mon site doit se connecter pour afficher les informations.

    Mais je ne vois absolument pas comment conserver mes informations tout en les protégeant, je ne veux pas passer des identifiants de connexion à une BD en POST ou GET ou autre.
    J'avais pensé à une variable superglobale PHP mais là encore je ne vois pas comment le mettre en place.

    Mon cerveau surchauffe je me perds dans mes réflexions, si quelqu'un peut m'apporter un peu de liquide de refroidissement il est le bienvenu!

  2. #2
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Pourquoi ne pas tenter une solution "à la dure" tu test une base de données et si ça ne marche pas tu enchaîne avec la suivante !

    (Je plaisante )
    Tu cherches donc à savoir quel user doit se connecter à quel base de données, lorsqu'un utilisateur souhaite se connecté tu ne récupère que son couple loggin / password ? Tu n'as aucun élément qui pourrait te permettre d'identifier la base de données, comme une url spécifique ?

    Une autre solution serrait de créer une base de données contenant tous les user avec la base de données à lequel il est rattaché, mais gare au doublon ...
    Si un même loggin peut être présent dans plusieurs base de données alors tu n'as pas le choix tu vas devoir envoyer une donnée à la connexion te permettant d'identifier la bonne base ...

  3. #3
    Membre éprouvé
    Avatar de Emyleen
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 151
    Par défaut
    Merci humitake de ta réponse

    Oui c'est ce que je me disais aussi, mais pour parer à ce problème de doublon je me disais que l'idée serait de faire une base dites de "connexion" qui contiendrais tout les utilisateurs de toutes les bases de données magasin (oui c'est...comment dire, imposant non?), ainsi que les identifiants de connexion à ces bases.

    Du coup comme la vérif se fait sur une seule base, pas de problème de doublon mais on réduit le nombre de login possible.
    Du coup lors du login, dans mon constructeur d'objet connexion je vais fouiller dans ma base de données pour pouvoir récupérer les identifiants de connexion BD client et effectuer les requêtes SQL. Mais ça reste un peu lourd.

    Et sinon, autre solution comme tu proposes, mettre une liste déroulante avec tout les magasins (et donc base de données) afin que celui qui veut se connecter sélectionne la BD.
    Malheureusement cette solution ne m'enchante pas car elle entraine que n'importe quel utilisateur pourrait voir tout les autres magasins qui sont clients de mon site.
    Alors il reste quoi, une zone de saisie? C'est ce qui me parait le plus simple, même si cela entraine une surcharge de saisie pour l'utilisateur.

    Qu'en penses-tu?

  4. #4
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Citation Envoyé par Emyleen
    Mon site s'adresse à des magasins, chaque magasin comprenant un certains nombre d'utilisateur du site. Lorsqu'un de ces utilisateurs veut se connecter, j'aimerai identifier la base de données à laquelle il veut se connecter mais sans lui demander, juste via son identifiant et son mot de passe.
    Les utilisateurs dont tu parle peuvent-ils dans un cas posséder plusieurs comptes, entendre par la un comptes par magasin ? Ou un utilisateur ne dispose que d'un compte pour la magasin auquel il est affilié ?

    Car une solution à laquelle j'ai pensé, mais je ne sais pas si elle est envisageable dans ton cas, serait de fournit une url spécifique pour un magasin. Sa fonctionnerais dans le cas ou tu dit par exemple au employé de carrefour de se connecter à l'url carrefour.gestion.com et ceux de auchan à l'url auchan.gestion.com.
    Mais cela rejoins un peu l'idée de la zone de saisie.


    Edit : Une petite idée vient de jaillir de mon esprit
    Sinon pourquoi ne pas ajouter un préfixe au loggin qui te fournirais l'information de la base de donnée ?
    Par exemple carrefour.loggin, ainsi un explode sur le . te permet d'identifier la base de données et de t'y connecter.

  5. #5
    Membre éprouvé
    Avatar de Emyleen
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 151
    Par défaut
    Très bonne question! Je n'ai pour l'instant pas envisagé de permettre à un utilisateur de se connecter à plusieurs magasins différents. Mais néanmoins cela reste possible, qu'on utilise une url spécifique ou un champs de saisie de magasin, puisque de toute façon j'irai chercher dans ma BD les identifiants de connexion correspondants.
    Un utilisateur pourra donc être relié à autant de Magasins que désiré, puisqu'on spécifie lors du login à quelle base on souhaite se connecter.

    J'utilise PDO afin de me connecter à ma BD, j'avais pensé insérer la vérification de la base de données demandée lors de la construction de l'appel à ma BD 'connexion', ce qui me permettrait de récupérer (toujours dans mon constructeur) les identifiant de connexion à la BD Magasin, de m'y connecter, d'effectuer la requête, de récupérer le résultat et de le retourner, tout ça encapsulé dans mon constructeur de connexion à ma BD pour éviter les hack.
    Penses-tu que cette solution soit assez sécurisée?

    Edit : je viens de voir ton idée, elle n'est pas mauvaise du tout ça ne ferait qu'un seul login à retenir pour l'utilisateur, ce qui n'est pas plus mal

  6. #6
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Niveau sécurité je ne suis pas un expert, mais je dirais que c'est plutôt bien pensé, ainsi tout est effectué par le constructeur et il ne peut pas y avoir d'action dessus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Conception] Utilisation de plusieurs bases de données ?
    Par cyreel dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/01/2007, 10h47
  2. [Conception] connexion entre 2 bases de données dans 2 noms de domaines
    Par kagura dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 23/03/2006, 12h53
  3. connexion a plusieurs bases de données oracle
    Par tarik75 dans le forum JDBC
    Réponses: 1
    Dernier message: 06/07/2005, 13h33
  4. connexion a une base de donné mysql
    Par ithery75 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/02/2005, 20h57
  5. connexion a une base de donnée distante mysql(site internet)
    Par rollernox dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/07/2004, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo