Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2006, 19h49   #1
Invité de passage
 
Inscription : avril 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 2
Points : 0
Points : 0
Par défaut Connexion unique à un site

Bonjour,

Est ce qu'il existe une façon (re)connue pour ne permettre qu'à un seul client d'accéder à des fonctionnalités d'un site?
Le premier pourrait utiliser toutes les fonctions, le deuxième aurait certains champs bloqués mais serait comme averti qu'il peut à un certain moment (a la deconnexion du premier) manier les outils du site.

J'ai une idée pour le faire (écrire une ligne dans une table et l'effacer à chaque ouverture/fermeture de session, comme ca, on peut savoir si qqun utilise deja les outils, et/ou ds quel ordre les connections se sont faites, pour passer les pouvoirs à l'utilisateur suivant), mais ca me semble assez foireux..

Merci d'avance

Kooxi
kooxinel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 19h53   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Oui, mais si le premier utilisateur ferme son navigateur sans cliquer sur le bouton deconnexion, ton script ne sera pas au courant et le deuxième utilisateur ne pourra toujours rien faire...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 21h55   #3
Membre actif
 
Avatar de renaudjuif
 
Inscription : avril 2006
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 300
Points : 174
Points : 174
Tu peux peut-être gérer ça en limitant le temps pour les sessions inactives:
si 1 client logué ne fait aucune action sur ton site pendant 5 mn. par ex., tu le déconnectes et tu donnes la main au suivant.
tu enregistres dans la base un timestamp pour le client logué que tu update à chaque requête qu'il fait sur ton site.
renaudjuif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2006, 00h52   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

La solution proposée par renaudjuif peut fonctionner mais, pour continuer dans la lancée de Mr N., il peut y avoir un problème si le 1° utilisateur reste inactif ce temps (5 minutes dans notre exemple) puis revient sur ta page : il n'aura plus rien et sera bien étonné de se voir bridé de la sorte.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2006, 14h29   #5
Invité de passage
 
Inscription : avril 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 2
Points : 0
Points : 0
Merci pour ces pistes. En bidouillant comme vous me l'avez montré, on peut arriver à gérer tous ces ptits problèmes. J'aurais bien aimé un truc propre et précis, mais ca doit être une préoccupation de fille

Kooxi
kooxinel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 14h31   #6
Invité régulier
 
Inscription : mai 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 6
Points : 7
Points : 7
Par défaut connexion unique php

Salut,
j'ai le même soucis que toi en ce moment et je voulais savoir si t'avais trouvé une solution au problème? j'aimerai que les internautes ne puissent ouvrir qu'une seule session à la fois avec le même identifiant et assurer le fonctionnement du système même si l'utilisateur connecté ferme son navigateur sans se déconnecter.

Merci
kafarsi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 14h36   #7
Membre habitué
 
Inscription : février 2005
Messages : 153
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 153
Points : 116
Points : 116
Tu met un champ dans ta base online a 1 une fois connecter et si il retente une connexion si le champ est a 1 alors tu lui dit pas possible.

Citation:
assurer le fonctionnement du système même si l'utilisateur connecté ferme son navigateur sans se déconnecter.
je pense qu'il faut que tu utilise un system comme celui proposer par renaudjuif car meme le onunload en js que tu pourrai mettre sur ta page lorsque le client ferme son navigateur n'est pas executé il me semble.
Halukard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 16h52   #8
Membre habitué
 
Avatar de remyli
 
Inscription : avril 2005
Messages : 272
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 272
Points : 113
Points : 113
Citation:
Envoyé par kafarsi
assurer le fonctionnement du système même si l'utilisateur connecté ferme son navigateur sans se déconnecter.
Faire convience aux utilisateurs en leur demandant de bien ce déconnecter avant de partir.......

Je rappel au passage une régle importante : " Les utilisateurs font toujours naimportequoi ".
__________________
Orthographe => Message Privé constructif svp
remyli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 19h49   #9
Invité régulier
 
Inscription : mai 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 6
Points : 7
Points : 7
Par défaut Trouvaille

Voila finalement comment je compte faire:
Je vais créer un script qui sera exécuté après chaque opération sur la base de données et à l'accès à une page du site. Ce script aura pour but de mettre à jour l'heure et la date de la dernière opération de l'utilisateur.
voici l'algo :

si (!session) alors
___si (etatuser=0) alors //une fois connecté on met le statu du user à 1
______identification
___sinon si (meme@ip ou delaisdépassé) alors //suite à une fermeture du navig. sans logout
______identification
___sinon
______eject("Session déjà ouverte avec ces paramètres")
___finsi
sinon si (delaidépassé) alors //15mn expirés
___identification
sinon
___traitementdelademande
finsi


delaidepassé = dernière opération vieille de plus de 15mn

Inconvenient (mais peut être considéré comme punition aux users indisciplinés) : s'il ferme son navigateur sans se déconnecter proprement, il lui faut attendre au max 15 mn pour pouvoir se reconnecter d'un autre poste(à condition qu'il n'utilise pas la même @IP ).

Voila en gros ce à quoi j'ai pensé. Je ne l'ai pas encore mis en oeuvre mais déjà je demande votre avis là dessus. Peut être que j'ai pas pris en compte un aspect du problème.
Merci
kafarsi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 20h02   #10
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
juste pour ton histoire des 15 minutes.

imagine tu vas toi même sur ton site, et comme de par hasard tu y vas avec un navigateur capricieux, disons IE (pour l'exemple bien sur) et qu'il crashe.
Bah il a planté pas grave, tu le relances (de toutes façon on est habitué) et la tu dois attendre 15 minutes ... gavant non ??

P.S : ne soyons pas mauvaise langue, quelque soit le browser si ca plante on est viré brutalement et donc pas le temps de se déconnecter.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 21h09   #11
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
si (!session) alors
___si (etatuser=0) alors         //une fois connecté on met le statu du user à 1
______identification
___sinon si (meme@ip ou delaisdépassé) alors   //suite à une fermeture du navig. sans logout
______identification
___sinon
______eject("Session déjà ouverte avec ces paramètres")
___finsi
sinon si (delaidépassé) alors  //15mn expirés
___identification
sinon
___traitementdelademande
finsi
Ouaw... php en français... ou ksé qu'on peut le donwloader... .. .



@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 11h09   #12
Invité régulier
 
Inscription : mai 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 6
Points : 7
Points : 7
Citation:
Envoyé par Maxoo
juste pour ton histoire des 15 minutes.

imagine tu vas toi même sur ton site, et comme de par hasard tu y vas avec un navigateur capricieux, disons IE (pour l'exemple bien sur) et qu'il crashe.
Bah il a planté pas grave, tu le relances (de toutes façon on est habitué) et la tu dois attendre 15 minutes ... gavant non ??

P.S : ne soyons pas mauvaise langue, quelque soit le browser si ca plante on est viré brutalement et donc pas le temps de se déconnecter.

Salut, le problème ne se pose pas si le navigateur crash. Selon l'algo son adresse IP enregistré lors de sa connexion n'aura pas changé et il lui sera juste demandé de s'identifier à nouveau!
kafarsi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 11h21   #13
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
donc j'avais pas compris ton truc, c'est si le naviagteur se ferme, et que tu changes d'IP ? c'est ça ...

la je comprend mieux ton choix, mais dans le cas ou tu n'as pas d'IP fixe, tu gere ca comment ?
en 56 Ko ca change donc tu peux planter ta connexion se reconnecter avec crash du navigateur, et donc tu attend.
ou en ADSL, des fois il change d'IP, la déconnexion ne se sent pas mais tu as changé d'IP, du coup ca te déconnecte, ca fait quoi sur ton site ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 12h31   #14
Invité régulier
 
Inscription : mai 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 6
Points : 7
Points : 7
Citation:
Envoyé par Maxoo
donc j'avais pas compris ton truc, c'est si le naviagteur se ferme, et que tu changes d'IP ? c'est ça ...

la je comprend mieux ton choix, mais dans le cas ou tu n'as pas d'IP fixe, tu gere ca comment ?
en 56 Ko ca change donc tu peux planter ta connexion se reconnecter avec crash du navigateur, et donc tu attend.
ou en ADSL, des fois il change d'IP, la déconnexion ne se sent pas mais tu as changé d'IP, du coup ca te déconnecte, ca fait quoi sur ton site ?
T'as raison, sur ce point. Faut que je réfléchisse pour voir comment parer à cela. Merci pour tes remarques!
kafarsi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2006, 12h22   #15
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
tu peux ajouter un cookie qui stocke un ID pour ce probleme ....
quand il ce reconnecte tu fais ton choix si l'IP a changer par rapport a l'ID ..


si tu es large au niveau ressourcs serveur (je pense surtout a la BP vers le serveur MySQL et au Nb de connexions possible), alors -->

je te conseillerais de faire en dynamique (JS ou du flash) un test toute les Xsec (30 secondes ?) de la presence de l'utilisateur avec maj de la table MySQL qui stocke le timestamp, par contre cette table doit etre en HEAP et ne pas comporter d'autres colonnes a part l'ID ou l'IP comme index de table.

car les 15mn c'est TROP, tu risques a tous les coups d'emmerder des utilisateurs ... sans compter que tu dois prendre en compte le gars qui a un navigateur a onglet et qui peut donc laisser la page ouverte indéfiniment ...
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2006, 13h04   #16
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Pour faire comprendre à l'internaute qu'il ne doit pas rester inactif je place une sorte de sablier. javascript + image. plus le temps passe plus la jauge descend. Si la sablier est terminé il est automatiquement déconnecté. Si l'utilisateur ne veut pas être deconnecté il doit cliquer sur une petit bouton qui va mettre le compteur à zero (Ajax requete http en arriere plan). Lorsqu'il arrive à deux minutes avant la fin la jauge clignote pour attirer l'attention.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h54.


 
 
 
 
Partenaires

Hébergement Web