Bonjour,
je cherche à limiter les utilisateurs de mon site à une seul ouverture de mon site (une seul page web ou onglet).
Si quelqu'un a une idée ?
Cordialement.
Bonjour,
je cherche à limiter les utilisateurs de mon site à une seul ouverture de mon site (une seul page web ou onglet).
Si quelqu'un a une idée ?
Cordialement.
Je vois pas bien comment faire. Pourquoi as-tu ce besoin ?
Mon site est groumant en ressource serveur, un page html effectue des requêtes ajax chaque seconde. Ainsi, si le l'utilisateur ouvre plusieurs page de mon site, il multipliera les requêtes ajax et donc augmentera les besoins en ressource serveur qui sont assez limitées.
L'empêcher d’ouvrir deux fois ton site c'est impossible.
Après tu peux peut être réussir à bidouiller un système pour que les requêtes ne soit exécuté que sur une seul page (la première).
Par exemple en enregistrant une valeur en variable de session et si cette valeur est présente alors les requêtes ajax ne s'effectuent pas.
Par contre je voit mal comment c'est réalisable sans prendre le risque de bloquer la première page qui risque à son tour de perdre les requête une fois que la variable de session est enregistrer.
On pourrait effectivement essayer quelque chose avec des tokens sur cookie et du JavaScript mais ce serait hautement aléatoire.
La solution la plus propre dans ton cas est de considérer l'accès au ressources comme quelque chose de bloquant et donc poser des verrous utilisateurs (sur session) ou physiques (flock ou LOCK TABLE) qui empêchent l'accès à la ressource par un autre processus et le mettrait en attente ou le ferait échouer.
merci pour vos réponses. J'y avais réfléchi et ça m'avait l'air compliqué, voir impossible. C'est pour ça que je suis venu voir des experts pour débattre sur la question.
+
Sinon la solution la plus simple serrait de faire en sorte de penser les pages afin que l'utilisateur n'ai aucune utilité à en ouvrir deux.
Voir alléger le traitement Ajax également.
Avec un simple verrou pour les requêtes Ajax c'est assez facile en fait:
- une premiere requête part pour mobiliser la ressource
- le script réponds "ok" ou "ko" avec un code d'erreur et un message (JSON quand tu nous tiens)
- si la ressource est disponible, on commence l'enchainement des requêtes Ajax (sinon on mets un gros message d'erreur et on bloque la page)
- une fois qu'on a fini, on envoie une requête Ajax pour libérer la ressource
Il faut prévoir un mécanisme de timeout pour éviter que l'utilisateur qui s'arrête en plein milieu ne puisse plus jamais accéder à la ressource.
Coté PHP c'est assez simple: la requête qui à demandé à ouvrir la ressource se voit attribuer un jeton, ce jeton sera posé sur session et il devra être renvoyé par chaque requête Ajax durant le processus pour valider qu'il n'y a bien qu'un seul script qui accède (pensons au petit malin qui lancerait malgré tout les requêtes manuellement).
Partager