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

PHP & Base de données Discussion :

Savoir et afficher si un utilisateur est sur une page [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 99
    Par défaut Savoir et afficher si un utilisateur est sur une page
    Bonjour,

    je développe une petite admin permettant une gestion de fiche.
    Afin d'éviter le problème de 2 utilisateurs voulant modifier la même fiche en même temps, j'aimerais savoir si il y a un moyen de bloquer une fiche lorsqu'un utilisateur est déjà présent sur celle-ci et pouvoir afficher sur la page listant les fiches, quel utilisateur est présent sur la fiche en question.

    Merci d'avance

  2. #2
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Salut,

    L'idée :
    - Lors de l'affichage de la ficher (form de modification je suppose), tu pourrais passer une valeur dans la base de donnée à 1 (sur la fiche par exemple, ajoute un champ "modif"), par défaut à 0.
    Lors de l'arrivé d'un membre dessus, ça passe à 1.
    Tu vérifies lors de la liste des fiches celle qui sont a 1 et tu ne fais pas de lien dessus, ça les "griseras" en quelques sorte. Et si la page du form, tu vérifies également qu'elle ne soit pas à 1 du coup, personne ne verra le form si elle est en cours de modification.

    Lors de la validation de la fiche (modification), tu remets le champ à 0.

    Et voilà, ton système marchera.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 99
    Par défaut
    salut Simdu80,
    oui j'y avais pensé a cette solution, mais si une personne est sur la fiche, et qu'il ferme maladroitement le navigateur, je ne passerais pas le champ à 0, il restera à un et j'aurais un bug dans mon admin je pense...
    n'y a t-il pas un moyen de faire comme sur certains forums ou on affiche les personnes présentes sur certains sujets ou endroit dans le forum ?

  4. #4
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    fouille du coté de l'événement "onunload" de javascript qui s'exécute lorsque tu fermes ou changes la page

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Tu n'es pas forcément obligé de passer par JavaScript - qui par ailleurs n'est pas un gage de sécurité car il peut être désactivé par le client, rendant ton système de sécurité caduc.

    Supposons que la fiche qu'un utilisateur est en train de manipuler soit un fichier. Tu peux tout à fait poser un verrou dessus (voir flock) le temps du traitement et retirer le verrou une fois que l'utilisateur à fini ses changements. Au chargement de la page de visualisation de la fiche, tu vérifie l'état de ce verrou et s'il est posé, tu peux par exemple afficher un message "un utilisateur à ouvert cette fiche, elle n'est disponible qu'en lecture seule pour le moment".

    Tu peux faire de même avec des bases de données en verrouillant des tables (LOCK TABLE) ou en mettant un flag dans une colonne pour éviter que 2 utilisateurs n'éditent la même ligne.

    Tu peux également contourner le problème en utilisant des techniques beaucoup plus complexe basées sur du cache et le design pattern IdentityMap (en somme pour faire comme Hibernate en Java). Mais c'est chasser la mouche au bazooka si tu en arrive là...

  6. #6
    Invité
    Invité(e)
    Par défaut
    salut,

    en complément de ce qui a été dit concernant la déconnexion maladroite de l'utilisateur.

    Il faut distinguer la fin de consultation volontaire de la fiche, et le temps maximum de consultation accordé.

    Si la fin de consultation est volontaire, tout baigne.
    Sinon on peut procéder de deux manières :
    la basique : tu mets une tempo max de consultation (ex : 15min). Au bout de 15 min, tu déconnectes l'utilisateur, et lui demande de se reco (mais pe que qq1 d'autre aura prit le jeton sur la fiche). Inconvénient : si l'utilisateur a désactivé js (...) et a quitté la page, alors on perd 15-x minutes pour rien.

    la un peu mieux : tu mets une deuxieme tempo de présence (ex:1min). Toutes les minutes, tu dis au serveur que tu es toujours là. Si tu as le js activé, c'est transparent. Sinon, tu te fais spammer toutes les minutes.
    Par contre, ca surcharge le serveur d'un appel toutes les minutes.

    Après qui désactive encore son js!!

    Enfin, je me pose la question de la déconnexion, ne peut-on pas imaginer un iframe avec un auto-refresh qui se charge de dire au serveur qu'on est toujours là?
    Ca règle les problèmes de js!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Afficher un tableau de variable sur une page excel
    Par Blaiz58 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/12/2014, 15h32
  2. [Google Maps] Afficher plusieurs cartes google maps sur une page ?
    Par chuckichucki dans le forum APIs Google
    Réponses: 8
    Dernier message: 05/05/2011, 17h57
  3. Réponses: 3
    Dernier message: 25/09/2008, 19h17
  4. Réponses: 2
    Dernier message: 03/01/2008, 12h42
  5. [MySQL] Afficher du texte UTF-8 sur une page encodée en ISO
    Par MiJack dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2006, 18h37

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