cookie or not cookie...

Eléphanteau du PHP | 21 Messages

11 juil. 2005, 00:03

bonsoir à tous

je me débats depuis quelques temps pour essayer de gérer un accès multi-langues à mon site....

j'ai travaillé à partir d'un tutorial trouvé ici: http://phpdebutant.org/article107.php

j'ai l'impression qu'avec ce script, je ne peux pas forcer l'accès à une langue donnée étant donné qu'il y a toujours détection du cookie de la langue dans mes pages par le :
<?php require("decide-lang.php"); ?>
... que j'ai ajouté sur toute mes pages...

code du decide-lang.php:
<?php 
 	 
 	 if(isset($HTTP_COOKIE_VARS['lang'])) {
 	     $lang = $HTTP_COOKIE_VARS['lang'];
 	 } else {
 	     // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
 	     $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); 
 	 }
 	 
 	 //script d'origine
 	 if ($lang=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
 	     include('lang/fr-lang.php'); 
 	 } elseif ($lang=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
 	     include('lang/en-lang.php'); 
 	 } 
 	 //fin du script d'origine
 	 
 	 //définition de la durée du cookie (1 an)
 	 $expire = 365*24*3600; 
 	 
 	 //enregistrement du cookie au nom de lang
 	 setcookie("lang", $lang, time() + $expire); 
 	 
 ?>

comment puis je faire pour que dans un premier temps la page s'affiche par défaut en fonction du cookie de la langue, mais qu'ensuite si l'utilisateur clique sur un bouton fraçais ou anglais ou autre, il outrepasse ce cookie?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

11 juil. 2005, 00:13

tu peux réécrire le cookie

ou créer une variable de session qui prend la valeur du cookie au départ, et peut être réattribuée en cours de navigation
et tu ne réécris dans le cookie que si la personne souhaite conserver le choix

Eléphanteau du PHP | 21 Messages

11 juil. 2005, 00:18

hou la la c'est compliqué pour moi tout ça....
comment faut-il procéder? ou alors si vous connaissez un bon tutorial pour que j'essaie d'adapter le code....

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

11 juil. 2005, 00:46

ben ce n'est pas si compliqué, rien de super technologique et tu as l'air de savoir faire quelques trucs en PHP déjà ;)

en gros :
une variable de session $_SESSION['langue']

1 - entrée sur le site
cette variable est vide :
s'il y a un cookie tu récupères la valeur
sinon tu mets une valeur par défaut

2 - si au cours de la navigation, la personne veut changer
tu fais une petite page qui change la valeur de cette variable


et voilà :)

si tu ne connais pas les sessions, c'est très simple
ce sont juste des variables transmises d'une page à une autre

pour activer les sessions : session_start() au début du fichier
et on accède ensuite au variable via le tableau $_SESSION['laVariable']

voici un tuto : les sessions

d'ailleurs en passant, ceci n'est plus utilisé : $HTTP_COOKIE_VARS
on utilise maintenant $_COOKIE
de même pour $HTTP_POST_VARS => $_POST ... etc

bon courage ;)

Eléphanteau du PHP | 21 Messages

11 juil. 2005, 01:03

merci beaucoup pour tout....
je potasse tout ça

sincèrement