CGI::Session->new() vérifie d'abord que le client n'a pas un cookie CGISESSID, si le client a ce cookie, il tente de récupérer la session ayant cet id, sinon il crée une nouvelle session (et envoie un cookie au client avec l'id).
Avec cette technique il devient très difficile pour un même client d'avoir deux sessions (en utilisant deux navigateurs différents toutefois, c'est possible), l'alternative est de faire passer les id de sessions par l'URL, néanmoins ceci est moins sécurisé (les URL passent en clair sur le net et sont stockés dans l'historique lisible par n'importe qui). Si tu fais passer les id par l'URL néanmoins, il sera plus facile d'autoriser plusieurs sessions par utilisateur, mais tu devras faire un travail supplémentaire pour indiquer l'id à new() :
CGI::Session->new( param('sid') );
et la transmettre dans chaque URL (ou requête) (fais un wrapper pour url qui l'ajoute pour toi).
Quel est ton but exactement ? Si c'est juste pour tester, débrouille toi plutôt avec plusieurs navigateurs, sinon explique-toi, peut-être n'as tu pas vraiment besoin de plusieurs sessions.
(NB: question sécurité, selon ton application, il peut-être possible d'activer l'ip-match pour la renforcer un tout petit peu)
--
Jedaï
Partager