jrmy7
Messages postés14Date d'inscriptionsamedi 10 octobre 2009StatutMembreDernière intervention22 mai 2012
-
14 nov. 2011 à 09:38
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 2013
-
14 nov. 2011 à 12:35
Bonjour à tous !
Comme vous le devinerez je débute en PHP.
C'est la deuxième fois que je pose cette question, la première publication m'a permis de comprendre beaucoup de chose mais pas à résoudre mon problème que je vais tenter de vous présenter le plus clairement possible.
Je suis entrain de réaliser un site en 3 langues différentes (en, fr, nl)... il y a donc un script de détection de la langue qui redirige vers
index_en.php
ou index_fr.php
ou index_nl.php.
Tout le texte de mon site se trouve dans un fichier externe en 3 langues :
m_lang_en_inc.php,
m_lang_fr_inc.php,
m_lang_nl_inc.php.
(fichier inclus directement dans l'une des 3 version "index").
Par exemple : m_lang_en_inc.php est inclus directement dans index_en.php
Jusque là tout fonctionne.
Maintenant mon problème :
Un menu "drapeau" est inclus dans chaque page (lui aussi en fichier externe).
Quand on clique sur l'un des drapeau, on retourne sur la page "home" de mon site dans la version correspondant au drapeau (fr, nl, ou en)
Dans cette dernière page ("home" en français par exemple) mon code commence (première ligne de script) par :
<?php
setcookie('ch_langue', '', time() - 3600); //destruction de l'ancien cookie (s'il y en a eut un)
$langue = 'fr'; //attribution de la valeur "fr" à la variable "langue"
setcookie('ch_langue', $langue, 3600); // création d'un cookie "ch_langue"
?>
C'est donc la variable "langue" avec la valeur "fr" que je veux envoyer à la page suivante.
Quand on clique sur un lien se trouvant sur la page "home".
Ce lien envoie sur la page suivante qui doit récupérer cette variable.
Le code sur la page suivante qui est chargé de récupérer la variable :
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013 14 nov. 2011 à 10:55
Deux questions:
- Ta variable $langue, elle vaut quoi quand tu appelle setcookie()? tu as essayé de faire un echo dessus, histoire d'être certain que c'est pas à ce moment là que ta langue est fausse?
- Quand tu récupère ton cookie, que contient $_COOKIE? Tu peux essayer de faire un print_r dessus?
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 14 nov. 2011 à 12:35
Salut,
<?php
setcookie('ch_langue', '', time() - 3600); //destruction de l'ancien cookie (s'il y en a eut un)
$langue = 'fr'; //attribution de la valeur "fr" à la variable "langue"
setcookie('ch_langue', $langue, 3600); // création d'un cookie "ch_langue"
?>
Deux remarques :
- Je ne pense pas qu'il soit judicieux de détruire le cookie si c'est pour le reconstruire dans la même page.
- Le second setcookie a un timespamp ridiculement petit dépassé depuis des années et ton cookie ne peux donc pas fonctionner. Rajoute donc time().
Et juste une dernière remarque d'ordre générale : dupliquer tes fichiers en fonction de la langue est une idée extrêmement mauvaise. Si tu as 42 langues tu devra avoir 42 copies de ton site, et donc 42 fois la même modification a faire lorsque tu veux changer quelque chose. Créé donc des fichiers de langue qui seront utilisés en fonction des cas, ainsi tu sépare le contenu (textes dans différentes langues) du "moteur".