par
AB » 10 janv. 2008, 05:19
au contraire la version avec session est la plus propre à mon sens et évite beacoup de travail sur les liens de ton site (et de possibles brêches de sécurité).
Pour la sécurité, je ne comprend pas vraiment comment, passer une variable dans l'URL, variable qui ne sera ni affichée ni utilisée dans une bdd, pourrait induire des problèmes de sécurité, d'autant que cette variable ne servira qu'au choix de la langue
C'est vrai que c'est plus long à mettre en place, mais il suffit de faire une recherche sur les <a href=... et de les compléter soit manuellement, soit automatiquement avec la variable à passer. Bien sûr si on a des headers en php, faudra également ne pas oublier de les compléter également. Mais avec l'aide sur les recherches - remplacements des éditeurs de texte cela peut se faire assez vite à moins que ce ne soit un méga site.
Et c'est d'autant plus facile qu'on y pense dès le début de la réalisation du site.
Par ailleurs, je ne sais pas si cela vaut la peine de déclencher une session juste pour une variable qui n'a pas besoin d'être sécurisée
Je me souviens d'un message d'Hubert qui disait qu'il valait mieux s'en passer si on pouvait l'éviter. Cela fait bosser plus le serveur...
@redouane
Si par la même occasion tu voulais faire afficher au départ, la langue par défaut du navigateur du client, tu peux remplacer tes quatre premières ligne de code par
//Cherche la langue native du navigateur et met l'anglais s'il n'a pas trouvé 'français'
$lang_nav = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_nav = strtolower(substr(rtrim($lang_nav[0]),0,2));
$lang = ($lang_nav == 'fr')? 'fr' : 'en';
//Affecte la valeur du choix du visiteur $_GET['lang'] à $lang sinon reste à la valeur de dessus (celle du navigateur)
$lang = (isset($_GET['lang']) && ($_GET['lang'] == 'fr' || $_GET['lang'] == 'en'))? $_GET['lang'] : $lang;
En complément tu pourrais même stocker le choix du visiteur dans un cookie. Si son navigateur accepte les cookie le client retrouverait son choix à chaque visite. Cela dit, le choix d'une autre langue par le visiteur devrait être peu fréquent puisque dès l'affichage le langage choisi est celui de la langue du navigateur.
[quote="Nagol"]au contraire la version avec session est la plus propre à mon sens et évite beacoup de travail sur les liens de ton site (et de possibles brêches de sécurité).[/quote]
Pour la sécurité, je ne comprend pas vraiment comment, passer une variable dans l'URL, variable qui ne sera ni affichée ni utilisée dans une bdd, pourrait induire des problèmes de sécurité, d'autant que cette variable ne servira qu'au choix de la langue :?:
C'est vrai que c'est plus long à mettre en place, mais il suffit de faire une recherche sur les <a href=... et de les compléter soit manuellement, soit automatiquement avec la variable à passer. Bien sûr si on a des headers en php, faudra également ne pas oublier de les compléter également. Mais avec l'aide sur les recherches - remplacements des éditeurs de texte cela peut se faire assez vite à moins que ce ne soit un méga site.
Et c'est d'autant plus facile qu'on y pense dès le début de la réalisation du site.
Par ailleurs, je ne sais pas si cela vaut la peine de déclencher une session juste pour une variable qui n'a pas besoin d'être sécurisée :-k
Je me souviens d'un message d'Hubert qui disait qu'il valait mieux s'en passer si on pouvait l'éviter. Cela fait bosser plus le serveur...
@redouane
Si par la même occasion tu voulais faire afficher au départ, la langue par défaut du navigateur du client, tu peux remplacer tes quatre premières ligne de code par
[php]//Cherche la langue native du navigateur et met l'anglais s'il n'a pas trouvé 'français'
$lang_nav = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_nav = strtolower(substr(rtrim($lang_nav[0]),0,2));
$lang = ($lang_nav == 'fr')? 'fr' : 'en';
//Affecte la valeur du choix du visiteur $_GET['lang'] à $lang sinon reste à la valeur de dessus (celle du navigateur)
$lang = (isset($_GET['lang']) && ($_GET['lang'] == 'fr' || $_GET['lang'] == 'en'))? $_GET['lang'] : $lang;[/php]
En complément tu pourrais même stocker le choix du visiteur dans un cookie. Si son navigateur accepte les cookie le client retrouverait son choix à chaque visite. Cela dit, le choix d'une autre langue par le visiteur devrait être peu fréquent puisque dès l'affichage le langage choisi est celui de la langue du navigateur.