Bonsoir,

Actuellement en train de développer un site bilingue français/anglais en PHP, je travaille sous EasyPHP 1.8 (PHP 4.3.10) avec librairie GD activée.

Je souhaite passer d'une page à l'autre une variable contenant la chaîne 'fr' ou 'en', suivant la langue choisie par l'utilisateur (par défaut français, un clic sur un lien permet de changer la langue). Je souhaite conserver cette variable sur toutes les pages, je me suis donc orienté vers les sessions.

Après avoir épluché plusieurs docs concernant les sessions (doc PHP.net, document "Débuter avec les sessions" de Cyril Beaussier notamment), je ne comprend toujours pas l'origine de mon problème.

Toutes mes pages commencent par un include de ce fichier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
	ini_set('arg_separator.output','&amp;');
	session_start();
 
	// inclusion du fichier langue
	if (!isset($_SESSION['lang'])) {
	echo "pouet";
		$_SESSION['lang'] = 'fr';
	}
	if (isset($_GET['lang'])) {
		if ($_GET['lang'] == 'en') {
			$_SESSION['lang'] = 'en';
		}
		else {
			$_SESSION['lang'] = 'fr';
		}
	}
	echo $_SESSION['lang'];
	include("./inclu/lang/".$_SESSION['lang']."/lang.php");
?>
Notez le "pouet" Il revient en haut de chaque page, ce qui signifie que ma session est toujours vide... En fait, le répertoire /tmp/ d'EasyPHP se remplit de fichiers session à chaque nouvelle page visitée. Il me semble donc que mon navigateur (Firefox 1.5 sous Windows XP Pro) ne reconnait pas la session commencée une page plus tôt, et qu'une nouvelle session se crée à chaque page visitée !

Faut-il passer l'identifiant de session dans chaque URL pour toujours travailler dans la même session ? A ce moment, autant passer directement la variable $lang dans tous les URL (beurk) !