2010-07-04 5 views
3

Je suis en train de déterminer s'il est préférable de stocker les données de mon utilisateur dans un cookie de session (comme mot de passe, nom d'utilisateur, etc.), et mettre à jour ce cookie uniquement lorsque je change la base de données MYSQL de mon PHP,Comment configurer mon système de connexion?

OU

Stockez le nom d'utilisateur et l'ID de l'utilisateur dans un cookie de session et accédez à la base de données MYSQL chaque fois que j'ai besoin d'obtenir les données de l'utilisateur.

Laquelle est la meilleure méthode ..? Je n'ai jamais mis en place un système de connexion, donc tout conseil serait très apprécié.

Répondre

2

Une session et un cookie ne sont pas identiques. Une session stocke simplement son ID de session dans un cookie (côté client) et toutes les données de session sur le serveur. Je suppose que vous vouliez vraiment dire session où vous avez utilisé le mot «cookie».

En allant de l'avant pour répondre à votre question, il est tout à fait correct et sûr de stocker la plupart des détails de l'utilisateur dans la session. Vous ne devriez jamais avoir besoin de stocker le mot de passe dans une session, puisque vous l'utilisez uniquement pour l'authentification. En dehors de cela, il est idéal de mettre en mémoire cache les données utilisateur fréquemment utilisées (choses que vous pouvez afficher sur chaque page) dans votre session pour enregistrer les trajets vers la base de données. L'inquiétude que Chris a mentionnée - changements aux données d'utilisateur - est presque inexistante, parce que les données d'utilisateur ne devraient (devraient) être modifiées par personne excepté l'utilisateur lui-même, auquel cas vous pouvez mettre à jour la session avec la base de données .

+0

+1 pour entrer dans plus de détails que j'ai fait. –

1

Bonne question. J'ai gardé les données de l'utilisateur dans la session PHP. Puisque c'est tout le côté serveur, il devrait être prudent de le faire, et évite une recherche de base de données supplémentaire. L'inconvénient est que vous ne récupérerez pas automatiquement les modifications apportées à la base de données au cours de cette session ... mais les données utilisateur ne sont normalement pas si dynamiques que je m'en soucierais.

+0

Des conseils sur la mise à jour des données ...? – mattsven

1

Vous ne devez pas stocker un mot de passe dans un cookie. Je stocke les détails dans la base de données et utilise memcached pour réduire la charge sur la base de données.

+0

Je suppose qu'il veut dire la variable de session plutôt que le cookie de session. La seule chose stockée dans une session "cookie" est l'identifiant de session utilisé pour attacher le client à une session particulière. Toutes les autres données de session sont stockées côté serveur. –

+0

@ Lèse majesté Eventuellement, je voulais éviter toute confusion, car sa première option précise "cookie de session". Donc, j'ai fourni le cas général. Je m'éloignerais de l'utilisation des sessions pour éviter la surcharge des sessions de démarrage/reprise et - peut-être plus important encore - éviter de devoir rappeler de reprendre une session là où ces données sont nécessaires. En outre, je crois que memcached fournit plus d'options pour la façon dont ces données sont mises en cache. Il fournit certainement une meilleure solution pour les serveurs Web en cluster, dans lesquels vous devez stocker les données de session dans une base de données centrale, afin que ces données soient disponibles pour tous les serveurs. –

+0

memcached est une excellente solution pour les applications à grande échelle, mais ce serait exagéré pour ce que le PO essaie de faire, d'autant plus qu'il mentionne que c'est la première fois qu'il construit un tel système. – casablanca

Questions connexes