Eviter double session? [Résolu]

agparchitecture 88 Messages postés jeudi 9 mars 2006Date d'inscription 7 novembre 2010 Dernière intervention - 13 août 2007 à 14:03 - Dernière réponse : agparchitecture 88 Messages postés jeudi 9 mars 2006Date d'inscription 7 novembre 2010 Dernière intervention
- 13 août 2007 à 16:17
Bonjour à tous, je suis en train d'implémenter une zone d'administration avec authentification par session. Le problème c'est que j'aimerais bien qu'une seule personne puisse s'y connecter. En effet, il faudrait eviter que deux administrateur ne puisse pas modifier les base de donnée en même temps.

Le problème c'est que je ne sais pas comment aborder cette solution.

Merci de bien vouloir me consacrer un peu de votre temps.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 13 août 2007 à 15:02
3
Merci
1) ok
2) oui bien sûr chaque connecté doit avoir son propre login ! sinon comment veux-tu distinguer 2 personnes connectées. Et à chaque rafraissement de page / requete ajax tu fais un UPDATE dans ta base pour indiquer le dernier signe de vie
3) c'est dans php.ini, donc sauf serveur dédié, tu ne peux pas.
4) (pas le courage de chercher sur google ) --> si t'as pas le courage de chercher, sur ce forum on n'aura pas le courage de te répondre, ya pas marqué Lycos ici

Merci Evangun 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Evangun
Meilleure réponse
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 13 août 2007 à 16:14
3
Merci
Non ça tu ne peux pas, tu notes dans ta base de données qu'il est connecté. Tu notes son login, et la date de son dernier signe de vie.

Merci Evangun 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Evangun
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 13 août 2007 à 14:21
0
Merci
Salut,

tu dois enregistrer quelque part dans ta base que quelqu'un est actuellement connecté (noter la date/heure), et donc pouvoir empêcher une autre connexion.

Ca c'est facile, ce qui l'est moins c'est savoir quand cette personne se déconnecte.
Pour ça tu peux demander à ce que la personne se déconnecte, mais tout le monde oublie de le faire.
Tu peux donc plutôt enregistrer la date du dernier signe de vie de l'admin connecté. Si ce dernier signe de vie est supérieur à 20 minutes (absence présumée) et que quelqu'un d'autre se connecte, tu retires le droit de modifier au premier pour donner au second.

Dernière astuce pour avoir un signe de vie régulier si la personne est connectée mais qu'elle ne fait pas de rechargement de page : Ajax.

Si j'ai pas été clair sur qqch, demande :)
Commenter la réponse de Evangun
agparchitecture 88 Messages postés jeudi 9 mars 2006Date d'inscription 7 novembre 2010 Dernière intervention - 13 août 2007 à 14:38
0
Merci
1. Enregistrer dans la base de donnée ou dans un fichier pas de problème.

2. Un lien de deconnection est prévu mais je ne vois pas comment voir si il y a un signe de vie. Comme la session est une variable globale est ce que via un script du type

        session_start();
        $_SESSION['admin'] = 1;
tous ceux qui ce connecte on la même variable ou une nouvelle est créer à chaque fois?

Ce qui me permettrait de faire une vérification au moment du login avec quelque chose du type

if (isset($_SESSION['archigpadmin']))
    { //session existante }

2bis Quelle est la fonction qui permet de définir la durée d'un session (pas le courage de chercher sur google )

3 Je ne connaix pas ajax. Qu'est ce que c'est
Commenter la réponse de agparchitecture
agparchitecture 88 Messages postés jeudi 9 mars 2006Date d'inscription 7 novembre 2010 Dernière intervention - 13 août 2007 à 15:15
0
Merci
Merci
4)
session.lifetime = 0  mais impossible car pas de serveur dédié...

Est-ce que tu peux me confirmé que lorsqu'on utilise les variables de session un cookies est crée avec les valeur de la session.

Je vais cherché du coté dchaque rafraichissement de page et suppression de session du premier connecté.
Commenter la réponse de agparchitecture
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 13 août 2007 à 15:29
0
Merci
A moins d'enregistrer dans ta base l'ID de session du premier, tu ne pourras pas supprimer sa session.

Non, le plus simple est de le laisser connecté, mais s'il veut revenir après la période des 20 mn (qui est au passage la période d'expiration des sessions par défaut, ça devrait éviter des soucis), ça bloque. Pour ça il suffit qu'à chaque nouvelle page où il va, avant d'afficher quoi que ce soit ça vérifie si c'est toujours lui qui est enregistré comme "admin en cours".

Oui pour le cookie de session, il est créé automatiquement, mais il ne contient que le session_id (à peu de choses près), pas les variables de $_SESSION. Lui il contient les variables de $_COOKIES.
Commenter la réponse de Evangun
agparchitecture 88 Messages postés jeudi 9 mars 2006Date d'inscription 7 novembre 2010 Dernière intervention - 13 août 2007 à 15:44
0
Merci
Il y a quand même quelque chose que je ne comprend pas???? Quand tu dis : "mais s'il veut revenir après la période des 20 mn, ... ... ça bloque"  En fait il faut que je fasse deux verifications :
        -1. La première pour voir si il est connecté
        -2. si il y est depuis moins de 20min?

Parce que ma période d'expiration des sessions par défaut est (phpinfo ()) :

session.cache_expire, 180, 180

Est-ce qu'on ne peut pas faire un compteur de personne connecté (type:http://www.phpcs.com/codes/NOMBRE-SESSION-ACTIVE-CONNECTES-SUR-SERVEUR_13196.aspx) et si il y en a un on empeche la page login de ce charger?

En tout cas merci de ta patiente
Commenter la réponse de agparchitecture
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 13 août 2007 à 15:54
0
Merci
Non je pense qu'il vaut mieux que login et autorisation de modifier soient 2 choses distinctes. Donc oui, 2 vérifications :
- la première juste vérifier qu'il est loggé (avec une simple variable de session)
- la deuxième requiert un appel à la base de données pour voir si qqn est déjà en train de modifier.

Moi ce que j'avais fait pour un client une fois c'était une "salle d'attente" : tu peux te connecter, mais si qqn est déjà en train de faire des modifs, ça te dit qui c'est, une estimation du temps avant qu'il ait terminé, et s'il y a d'autres personnes avant toi qui ont aussi demandé à faire des modifs (une file d'attente en fait).
Commenter la réponse de Evangun
agparchitecture 88 Messages postés jeudi 9 mars 2006Date d'inscription 7 novembre 2010 Dernière intervention - 13 août 2007 à 16:04
0
Merci
Oui mais comment je peux récupérer sa variable de session pour voir si il est connecté.  c'est ca que je ne comprend pas en fait. Comment peut-n récupérer des variable de session démarré depuis deux ordinateur différent?
Commenter la réponse de agparchitecture
agparchitecture 88 Messages postés jeudi 9 mars 2006Date d'inscription 7 novembre 2010 Dernière intervention - 13 août 2007 à 16:17
0
Merci
ok. et pour celui qui veut se connecter je ne vérifie que la base de donnée...

Je me met au travail et poste la source pour avis.
Commenter la réponse de agparchitecture

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.