8791 sujets

Développement web côté serveur, CMS

Bonjour,

Pour gérer le changement de langue sur mon site, je pensais utiliser une variable stockée dans une session afin qu'elle soit accessible tout au long de la visite.

Je procède donc en 2 étapes. Premièrement au chargement de chaque page, je vérifie si la variable de session existe. Si non, je la crée avec ma langue par défaut. Voici le code que j'utilise pour ça:
if(!$_SESSION['lang']) {
	$_SESSION['lang'] = array();
	$_SESSION['lang']['langue'] = 'fr';
}

Ensuite, j'ai un lien par langue, qui m'envoie sur une page chargée de changer la variable de session, puis de retourner sur la page précédante.

Le problème, c'est qu'il ne semble pas tenir compte de mon
if(!$_SESSION['lang'])
et donc qu'à chaque rechargement, il me vide ma session et remet la valeur par défaut.
Modifié par <nicolas> (23 Sep 2007 - 12:36)
Salut <nicolas> Smiley cligne ,

pourquoi utilises-tu un array au lieu de mettre directement $_SESSION['lang'] = 'fr'; ?

Personnellement j'aurais plutôt fait :
if(!isset($_SESSION['lang'])) {
	$_SESSION['lang'] = 'fr';
}

Sinon, si tu n'as que cette variable à gérer, tu pourrais utiliser un cookie à la place des sessions Smiley murf ...

Autresinon (et toujours personnellement Smiley lol ) je préfère éviter les variables dans l'url à moins bien sûr que ça ne facilite vraiment la vie (ce qui n'est pas forcément le cas ici puisqu'il faudrait la rajouter à chaque lien de tes pages Smiley confus )

A+
Modifié par Heyoan (23 Sep 2007 - 12:09)
L'array devait être un vieux reste, effectivement inutile ici.

Par contre ton code ne fonctionne pas non plus Smiley confus . Php semble toujours ignorer mon if.

Et sinon comment utilise-t'on les cookies? J'imagine que cela fonctionne plus ou moins sur le même principe que les sessions. Et est-ce qu'il y a bcp de navigateurs qui bloquent ces cookies?
Tes pages commencent bien par session_start(); Smiley rolleyes ?

Pour utiliser les cookies (ce que font également les sessions par défaut) tu peux faire :
[b]écriture[/b] (à effectuer avant tout code html)
<?php
$langue = 'fr' // penser à un formulaire pour pouvoir modifier [langue] 
$expire = 365*24*3600;  // on définit la durée du cookie, (ici 1 an)
setcookie("langue_pref",$langue,time()+$expire, '/'); 
?>

[b]lecture[/b]
<?php
$langue = $_COOKIE['langue_pref'];
?>


Les cookies peuvent effectivement être bloqués non pas directement par des navigateurs mais par des utilisateurs "méfiants" Smiley lol ... Faisant pourtant partie de cette communauté j'accepte toujours les cookies du site principal et ne bloque que les cookies "tierce partie" (souvent de la pub)... Tout ça pour dire que la grande majorité des visiteurs ont les cookies activés.

A+
Modifié par Heyoan (23 Sep 2007 - 13:14)