2010-06-29 6 views
3

Je suis en train de jouer avec la création d'un système de connexion utilisateur en php.Pour utiliser ou ne pas utiliser session_set_save_handler?

J'ai étudié cet article (http://www.evolt.org/node/60384) pour l'aborder.

Dans l'article ci-dessus, l'auteur utilise une combinaison de $ _SESSION et de sa propre table de base de données personnalisée pour stocker les informations utilisateur.

Mais ...

J'ai également rencontré de nombreux articles qui recommandent à l'aide session_set_save_handler pour configurer des sessions php pour utiliser nativement la base de données. (Je suppose que c'est une technique plus récente)

Je me demande: Si je prévois de configurer une table "activeUsers" dans la base de données pour enregistrer des données de session de toute façon, est-il plus logique d'utiliser session_set_save_handler? (Il semble que j'utilise la base de données pour stocker des informations de session, je pourrais aussi me passer de sessions de système de fichiers.)

Ou est-ce qu'il y a un avantage à quitter les sessions php dans leur forme de système de fichiers par défaut, puis à vérifier les connexions de l'utilisateur contre ma table db personnalisée?

Merci d'avance pour votre aide.

Répondre

2

Le stockage des données de session dans une base de données peut être difficile à configurer au début, mais une fois qu'une classe ou une fonction est configurée pour cela, vous bénéficiez de quelques avantages potentiels sur le système de fichiers. La question est de savoir si ces avantages sont nécessaires pour votre système. Ce sont, je pense, parmi les raisons les plus courantes pour le stockage des données de session dans une base de données:

Sécurité: Si vous utilisez l'hébergement mutualisé, les données de session peuvent avoir lieu dans les zones du disque qui sont accessibles par d'autres utilisateurs du système. Cela pourrait constituer un risque de sécurité pour votre application. Si votre application est gérée par plusieurs serveurs (une batterie de serveurs, par exemple,), vous devez vous assurer que plusieurs demandes provenant du même client, qui peuvent être traitées par différents serveurs, reçoivent la même réponse. . les données de session C'est assez facile à faire si les données de session est dans une base de données

Performance:. stockage de base de données peut donner une augmentation de la performance sur le stockage du système de fichiers, mais cela est fortement influencée par la configuration du serveur

.

Interaction de la base de données: Selon le rôle de vos données de session et la façon dont votre application l'utilise, il peut être plus facile d'extraire des données de session et des informations connexes si elles se trouvent toutes dans une base de données.

Une autre chose à prendre en compte est que vous pouvez améliorer les informations de session en stockant des informations supplémentaires, telles que les adresses IP, les heures de connexion et de déconnexion, etc. Ce type d'informations peut être utile lorsque vous tentez d'empêcher le piratage de session. Donc, à part le problème de l'évolutivité, je pense que tout est très subjectif. Vous devez augmenter le travail supplémentaire requis pour implémenter le stockage de session de base de données, avec les avantages possibles.

+0

Merci Mike pour la réponse. En examinant ces 4 raisons, aucune d'elles ne s'applique à mon cas. Donc, je n'ai pas de soucis avec l'utilisation de sessions conventionnelles - * sauf * - Je prévois de créer une table db "activeUsers" de toute façon. Je ne sais toujours pas s'il est plus logique que les sessions utilisent la base de données en mode natif, si certaines informations de session de l'utilisateur vont dans la base de données de toute façon. – Travis

+1

@Travis: Il ne semble pas que vous ayez * besoin * de stocker des données de session dans une base de données, mais votre application pourrait finir par être un peu plus propre si vous le faites. Vous pouvez essayer le paquet [Pear HTTP_Session2] (http://pear.php.net/package/HTTP_Session2) si vous ne voulez pas écrire votre propre gestionnaire. – Mike

1

Si vous l'utilisez vous devez créer votre propre éboueur.

Questions connexes