|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : novembre 2002 Messages : 120 ![]() |
Bonjour à tous,
Je me pose aujourd'hui une question simple : Comment peux-t'on retravailler avec une session stockée en bdd (côté serveur donc) quand l'utilisateur (avec script de connexion) revient sur la page ? Voici mon fonctionnement et idée actuelle : J'utilise session_set_save_handler pour traiter mes sessions côté bdd serveur. Je stocke l'id_session, les donnees_session, la dateexpiration_session et l'identifiant (pour le dernier c'est plus compliqué que ça mais l'explication ne ferait que complexifier l'histoire). Le but est que l'utilisateur se connecte la toute première fois : la session est créée et stockée en bdd. Il navigue, on stocke au fur et à mesure les données_session. Il quitte son navigateur, sa maison et part chez un collègue. De ce nouveau poste, il se connecte et à partir de là, mon script de session reconnait que c'est le même identifiant validé, je cherche à se moment à ré-utiliser la session qu'il avait auparavant. Comment puis-je faire pour forcer l'ancienne session à se transformer en l'ancienne (récupération des données_session) pour avoir une continuation dans l'utilisation ? Merci d'avance. Précision : la date d'expiration ne servira pas ici à supprimer complètement la ligne de session de la bdd mais plutôt à la désactiver (en supprimant l'id_session par ex) pour éviter une récupération pirate.
__________________
et ne sont pas des options...
|
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Dans ta BdD il faut lier sessions et utilisateurs.
Exemple : users ------------ user_id user_nickname user_password ... sessions ------------ session_id session_user # Clef étrangère sur users.user_id ... A l'authentification de l'utilisateur tu vérifies dans la table sessions si l'utilisateur possède une session, si oui tu la charges.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : novembre 2002 Messages : 120 ![]() |
Salut et merci de ta première réponse.
Malheureusement ce n'est pas aussi simple : je travaille dans un environnement javascript (jquery) et php (requête ajax). La première fois que je me connecte, l'ajax passe sur un fichier de connexion, qui traite la mise à jour de la session, le chargement des données et la mise à jour de l'id sur le nouveau id de session (si j'arrive à confirmer que ça marche). Ensuite, les pages php (toujours appelées par l'ajax) ne doivent pas se baser sur le pseudo (trop facile à modifier côté client) et du coup se base sur l'identifiant de session (celui modifié à la volée la première fois). J'ai également un soucis de garbage collector pour les sessions. En effet, les sessions trop vieilles doivent être désactivées dans la bdd sans être supprimée (sinon perte de données). Il existe une requête sql pour remplacer l'id_session par un texte du style "out_".$pseudo ou pseudo serait remplacé par le pseudo de la session à désactiver. Une requête imbriquée ??? (je préfèrerai plutôt que surcharger la bdd de plusieurs requêtes). UPDATE table SET id_session='out".$pseudo."' WHERE dateexpiration_session<".time(); Il faudrait que j'arrive à imbriquer une requête SELECT dedans pour recupérer à chaque fois le pseudo concerné. Une idée ?
__________________
et ne sont pas des options...
|
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Re,
Je ne vois pas où est la difficulté avec l'AJAX. T'en dis peut-être pas assez. Citation:
Une sous-requête est également possible ( http://dev.mysql.com/doc/refman/5.0/...ubqueries.html )
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com