Est-il possible de détecter si une page est ouverte dans 2 navigateurs différents?détecter l'onglet actuel
J'ai créé une petite application qui stocke des données dans $ _SESSION, et le problème est que lorsque plusieurs onglets sont ouverts, les vars de session sont écrasés (filtres de recherche dans un formulaire de recherche) et les onglets peuvent afficher mêmes résultats pour des recherches apparemment différentes.
Le navigateur principal utilisé pour cette application est IE, il a donc fallu un certain temps pour toucher ce problème et l'application a eu ..larger et plus difficile à modifier.
Jusqu'à ce que je fixe toutes les références à cette recherche, je voudrais faire un « quick fix & sale » et refuser d'ouvrir deux onglets avec la même page, ou afficher au moins un avertissement ..
modifier: @arjun: oui, je sais, mais je dois restaurer les filtres de recherche lorsque l'utilisateur retournera sur la page de recherche :) $ SESSION est donc la solution. En outre, les filtres sont envoyés par AJAX et il devient difficile de déboguer lorsque vous avez beaucoup de filtres (GET est de taille limitée, donc j'utilise POST)
@tomhaigh: thx..mais c'est ce que je suis essayer de faire maintenant, mais cela prendra un certain temps parce que cet onglet "chose" affecte l'ensemble de l'application, et je dois changer les filtres dans tous les modules ... je cherchais quelque chose de rapide & sale pour l'instant. Astuce: je ne veux pas utiliser time() et rand() car ces fonctions peuvent (et finiront par) générer des nombres dupliqués. Dans la nouvelle "réécriture" j'utilise microtime de PHP et Date.getTime() dans JS et concatène theese 2 pour générer un id vraiment unique. En outre, j'ai écrit une fonction pour analyser la SESSION de temps en temps et nettoyer les filtres stockés plus de 2 heures de sorte qu'il ne deviendra pas trop grand.
@Gortok: je sais ... mais a été conçu avec IE6 et la plupart des utilisateurs (quelque chose comme 90%) utilisent toujours IE6 en se connectant à cette application ... donc je n'ai jamais vu la nécessité de considérer plusieurs onglets ouverts.
Il a déjà déclaré qu'il voulait une solution temporaire rapide et sale. De toute façon je ne peux pas comprendre comment le modèle singleton aide dans ce cas. Singleton $ _Session? Il n'y a pas d'application en PHP donc il ne peut pas y avoir de singleton non plus. Chaque objet meurt lorsque la réponse se termine. – Diadistis