|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Bonsoir,
Voila je développe un site en php/mysql avec un système de fiches clients, permettant de générer des lettres personnalisées pour chaque client. Bref, j'aimerais limiter l'accès à une page de mon site (une fiche client) à un seul utilisateur à la fois mais je vois pas trop comment faire pour détecter que quelqu'un est déjà entrain d'y accèder. Je suis un peu perdu, alors si quelqu'un à une piste qui pourrai me faire avancer ce serait sympa. |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2003 Messages : 2 018 ![]() |
Bonsoir,
Eventuellement tu pourrais faire une table documents_en_ligne avec un champ id_du_document Quand un utilisateur ouvre le doc, tu vérifies qu'il n'est pas dans la table, sinon tu l'insères. (en mettant à jour l'affichage pour mettre à jour la liste des docs disponibles) Quand le doc est fermé, tu supprimes de la table et il est à nouveau dispo. Pour vérifier que l'user l'a fermé : - Quand sa session est close (il a quitté le site) - Quand il ouvre un nouveau doc (tu libères l'autre avant) - Un bouton "fermer le doc" Bon, c'est une idée, hein. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Merci, oui c'est une bonne idée.
Enfait je suis obligé de passer par la base de données, y a pas moyen de transferer directement des données entre 2 machines par des variables par exemple? (je sais pas si je suis très clair là) Genre une super globale accessible par tout les utilisateurs. |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2003 Messages : 2 018 ![]() |
Ben une super global entre plusieurs machines , je ne crois pas que ce soit possible. ni une super session ...
Le plus simple, ce serait la table. (accessible par tous en meme temps) Si dans ta liste des docs tu marques les docs utilisés (icone ou css), les autres utilisateurs ne peuvent pas cliquer dessus. Par contre, il faudrait pouvoir vérifier la diponibilité des docs toutes les x secondes (la liste des docs dans un iframe avec un refresh de x secondes + requete dans la table) sinon les autres users vont croire à une panne ou à l'indisponibilité permanente des docs. Tu devrais pouvoir faire un truc sympa en partant dans cette direction. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Mais y a moyen de supprimer un doc de la table au moment ou l'utilisateur ferme son navigateur?
|
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2003 Messages : 2 018 ![]() |
sur un onclose() dans le body
Faudrait essayer sur un script trés simple pour voir. Tu trouveras peut etre mieux en le faisant |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
quand on utilises du Javascript il ne faut pas oublier à gérer le cas où le Javascript ne fonctionne pas
ça peut venir de plein de raison : - Javascript désactivé par défaut dans le navigateur - Javascript désactivé par un utilisateur qui essaye de pirater le système - plantage de la machine ou de la connexion internet
__________________
Modérateur PHP |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Je vais essayer avec votre solution, merci.
Je me demandais comment ça fonctionnais par exemple dans un forum en php pour pas que le même utilisateur se connecte simultanément sur 2 machines différentes. |
|
|
00
|
|
|
#9 | |
|
Membre chevronné
![]() Inscription : mai 2005 Messages : 657 ![]() |
Salut
Citation:
Ton problème n'est pas évident car HTTP ne garde pas une connexion permanente avec l'utilisateur. Le principe c'est requête -> réponse uniquement. Tu peux effectivement utiliser javascript pour envoyer une requête au serveur qd l'utilisateur ferme sa fenêtre, mais pense au cas où l'ordinateur plante, la connexion est interrompue, etc... J'imagine que si tu as un document qui reste ouvert est que plus personne ne peut prendre la main dessus ça va être assez embetant. Une autre solution pourrait être d'utiliser AJAX pour envoyer périodiquement une requête au serveur qui dise "J'utilise le fichier machin", par exemple toute les minutes. Si au bout de 2 minutes aucune requête n'a été envoyé, soit le navigateur a été quitté brutalement soit la connexion a été coupée. Evidement ces 2 solutions nécessitent Javascript activé chez le client |
|
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
Je pense à une solution plutôt simple.
tu gère les sessions en base Mysql et tu libère les pages qui sont occupée depuis une durée supèrieure à la durée de tes sessions. Pour cela, il suffit d'un petit script qui nettoie la table à chaque demande d'une page par un utilisateur. Mais entre nous, je vois pas la raison qui te pousse à rendre certaines pages innacessibles lorsque un utilisateur est connecté. ( Ok la curiosité est un vilain defaut @++
__________________
"Soyez les changements que vous aimeriez voir dans le monde" Mahatma Gandhi |
|
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Inscription : mars 2007 Messages : 5 ![]() |
Finallement j'ai utilisé une table ou j'enregistre les documents ouverts et je les supprime sur un onUnload en Ajax, ou quand l'utilisateur quitte cette partie du site.
Comme c'est pour un intranet je suis sûr que le javascript sera actif. Citation:
Citation:
Merci pour tous vos conseils. |
||
|
|
00
|
|
|
#12 | ||
|
Membre chevronné
![]() Inscription : mai 2005 Messages : 657 ![]() |
Salut,
Citation:
Citation:
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com