Bonjour a tous.
Je crois que c'est la premiere fois que je pose une question sur ce forum, bien que je le lise assez frequemment.
Je suis actuellement confronte a un probleme de gestion de sessions sur une appli PHP (non dev par mes soins).
Environnement : PHP4.3, IIS6
Voila la situation.
Cette appli est utilise dans un callcenter, donc disons basiquement "pour logguer des appels".
L'operateur se log via la page : login.php
accede a la page principale : main.php
Sur cette page principale, il y a plusieurs "drapeaux" pour les zones disponible.
Apres click sur un de ces drapeaux, il arrive sur la page : call.php, page sur laquelle il va donc logguer un appel.
Au moment ou l'operateur arrive sur la page call.php, il y a deja tout un tas de variables mises en Session.
Si ce meme operateur utilise firefox, et ouvre un nouvel onglet ou une nouvelle fenetre, et qu'il veut simultanement travailler avec 2 onglets sur l'appli, il y a un conflit tout bete :
Imaginons que sur l'onglet 1 il se trouve sur call.php, et qu'il gere un autre appel en meme temps (...) au moment ou il ouvre call.php avec le second onglet, les variables de Session initialisees par l'onglet1 sont "ecrasees" par celle de l'onglet 2.
Apres validation et fermeture de call.php sur l'onglet 2, toute action faite sur call.php de l'onglet 1 est perdue, c'est a dire ne sera pas enregistree sur la BDD ...
Je ne vois pas beaucoup de solutions a ce probleme, la seule que j'ai envisagee est la suivante (et c'est la que j'ai besoin d'aide) :
Operateur 1 accede a login.php, et on aurait un "session_start('session1')"
Operateur 1 est dirige vers main.php, puis se rend sur call.php.
Sur call.php on verifie l'etat des variables de session, si vides, on continue avec "session_start('session1')"
Si non vides (donc deja remplies par un precedent onglet?), je sauvegarde la session et j'ouvre "session_start('session1')" sur laquelle je fais mon bazard. a la fin la session est liberee, et par magie la session1 restauree...
Bref je ne sais pas si :
1 ma solution est possible
2 comment la mettre en place car pas tres au point.
Si quelqu'un ici a des pistes, idees, meme si c'est tout autre chose, je suis preneur.
Merci d'avance