Page 1 sur 1

Plusieurs sessions en local

Posté : 27 févr. 2008, 12:24
par agité
Bonjour,

J'ai créer plusieurs sites en local, qui utilisent tous des sessions, mais je me retrouve avec des conflits entre chaque.

Par exemple je me log sur un premier site puis quand je tape l'adresse de l'autre sans me loger il arrive bien dessus (détection du session_id() ) mais il m'affiche bien des erreurs (mes liens sont tous configuré dans une variable de session.

Voici le code du premier site :
// Parametres session
	session_start();

				session_register("site1");

				$_SESSION['name']= session_name();

				$_SESSION['session_id'] = session_id();
				
				$_SESSION['User_Name'] = $Array_VerrifId['Nom'];
				
				$_SESSION['civ'] = $Array_VerrifId['Civilite'];

				$_SESSION['login'] = quote_smart($_POST['identifiant']);
				
				$_SESSION['Id_utilisateur'] = $Array_VerrifId['Id'];
				
				$_SESSION['Rank'] = $Array_VerrifId['Id_user_profil'];
				
				$_SESSION['Base_url'] = "lien/sur/le/disque/";
				
				$_SESSION['Base_img'] = "http://192.168.0.205/site/";


				if(!empty($_POST['Url'])){
				header("Location: http://192.168.0.205".$_POST['Url']);
				}else{
				header("Location: accueil.php?".$_SESSION['name']."=".$_SESSION['session_id']);
				}
Pour le premier donc le session_register() est "site1"

Ensuite sur le 2ème site c'est sensiblement la même chose (même script utilisé a la différence du session_register() ).


// Parametres session
	session_start();

				session_register("site2");

				$_SESSION['name']= session_name();

				$_SESSION['session_id'] = session_id();
				
				$_SESSION['User_Name'] = $Array_VerrifId['Nom'];
				
				$_SESSION['civ'] = $Array_VerrifId['Civilite'];

				$_SESSION['login'] = quote_smart($_POST['identifiant']);
				
				$_SESSION['Id_utilisateur'] = $Array_VerrifId['Id'];
				
				$_SESSION['Rank'] = $Array_VerrifId['Id_user_profil'];
				
				$_SESSION['Base_url'] = "url/du/site";
				
				$_SESSION['Base_img'] = "http://192.168.0.205/site2/";
				
				if(!empty($_POST['Url'])){
				header("Location: http://192.168.0.205".$_POST['Url']);
				}else{
				header("Location: accueil.php?".$_SESSION['name']."=".$_SESSION['session_id']);
				}
Pourtant il ne devrait pas utiliser le même cookie.

Une idée ? :roll:

Posté : 27 févr. 2008, 12:37
par Calimero
Bonjour,

Les sessions se basent sur un cookie, et les cookies sont stockés par le navigateur selon le domaine du site visité. Si tu accède à tous tes sites locaux via le même domaine (localhost je présume), il est normal que ton navigateur considère que le cookie de session est commun à tous les sites.

Pour séparer tout ça, il te suffit d'y accéder à travers des domaines différents (on appelle cela des virtualhosts, voir la doc apache). Ton navigateur stockera alors les cookies séparément pour chaque site.

Par exemple tu peux créer les virtualhosts monsite1.locahost, monsite2.localhost...

Une autre solution encore plus simple, et qui demande zéro configuration de ta part, est de te délogguer proprement quand tu passes d'un site à l'autre ;-)

Dans tous les cas, c'est un problème que tu seras normalement le seul à rencontrer (en production, tes deux sites ne seront sûrement pas hébergés sur le même domaine), je te conseille de ne pas trop te casser la tête avec . |*()

Posté : 27 févr. 2008, 12:50
par agité
Bonjour,

Les sessions se basent sur un cookie, et les cookies sont stockés par le navigateur selon le domaine du site visité. Si tu accède à tous tes sites locaux via le même domaine (localhost je présume), il est normal que ton navigateur considère que le cookie de session est commun à tous les sites.

Pour séparer tout ça, il te suffit d'y accéder à travers des domaines différents (on appelle cela des virtualhosts, voir la doc apache). Ton navigateur stockera alors les cookies séparément pour chaque site.

Par exemple tu peux créer les virtualhosts monsite1.locahost, monsite2.localhost...

Une autre solution encore plus simple, et qui demande zéro configuration de ta part, est de te délogguer proprement quand tu passes d'un site à l'autre ;-)

Dans tous les cas, c'est un problème que tu seras normalement le seul à rencontrer (en production, tes deux sites ne seront sûrement pas hébergés sur le même domaine), je te conseille de ne pas trop te casser la tête avec . |*()
Merci pour ta réponse Calimero, je ne trouvais pas pourquoi justement il ne me stockais pas les sessions sur 2 cookies différents, ma logique était : si je register 2 noms de sessions différentes il vas les stocker dans 2 cookies.

Je ne voyais pas le nom de domaine comme explication, mais en hébergent les sites sur 2 domaines differents le problème ne se pose pas.

Je met la balise [Résolu].