IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Connexion unique à un site


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    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

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    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...

  3. #3
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    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.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    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

  6. #6
    Futur Membre du Club
    Inscrit en
    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

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    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.

    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.

  8. #8
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    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 ".

  9. #9
    Futur Membre du Club
    Inscrit en
    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

  10. #10
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 127
    Points : 2 557
    Points
    2 557
    Par défaut
    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.

  11. #11
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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°

  12. #12
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    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!

  13. #13
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 127
    Points : 2 557
    Points
    2 557
    Par défaut
    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 ?

  14. #14
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    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!

  15. #15
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    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 ...

  16. #16
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 501
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 501
    Points : 6 086
    Points
    6 086
    Par défaut
    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.

Discussions similaires

  1. Connexion unique à une base de données
    Par bouchette63 dans le forum DB2
    Réponses: 9
    Dernier message: 19/09/2006, 16h16
  2. connexion a un site web
    Par nono08 dans le forum Web
    Réponses: 3
    Dernier message: 26/08/2006, 20h41
  3. simuler des connexion a mon site..
    Par questionneuse dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 11/07/2006, 15h05
  4. Pb de connexion sécurisée pour sites Internet et Intranet
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2003, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo