|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : janvier 2005 Messages : 157 ![]() |
Bonjour à tous.
Je développe un site où les visiteurs peuvent changer de langue "à la volée", en cliquant simplement sur le bouton de la langue désirée en haut de page. Les expressions localisées sont récupérées dans une base de données, donc je gère ce petit mécanisme avec PHP. Les boutons sont de purs éléments de formulaires HTML. J'utilise $_SESSION['locale'] pour mémoriser la langue souhaitée par le visiteur. Au début de chaque page PHP, j'insère session_start(). Oui mais voilà : lorsqu'on utilise la fonctionnalité page suivante/précédente du navigateur, un message d'avertissement bien connu s'affiche : Pour afficher cette page, les informations précédemment transmises par Firefox doivent être renvoyées. Ceci répétera toute action etc. Or ce message m'enquiquine parce qu'il n'y a aucun enjeu, pour mes visiteurs, dans la manipulation des données sur la langue. J'ai remarqué qu'en virant le session_start() au début de mes pages PHP, je n'avais plus ce problème. Pensez-vous, vu l'utilisation triviale que je fais des sessions dans mon cas, qu'il soit raisonnable de partir sur cette solution ? Y a-t-il un autre moyen, plus correct peut-être, de contourner le problème ? Merci pour votre lecture ! |
|
|
00
|
|
|
#2 |
![]() ![]() Développeur Web Inscription : décembre 2006 Messages : 2 335 ![]() |
Le bouton ne serait pas un formulaire ?
__________________
Développeur | Zend Certified Engineer Étapes Pour mieux se servir du forum: 1. Commencez par lire les cours et tutoriels ; 2. Faites une recherche; 3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles; Nix>_Rien n'est plus pratique que la théorie |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Patrick Mingard Inscription : mai 2006 Messages : 166 ![]() |
Bonjour Kéraunos.
Le protocole HTTP contient deux méthodes différentes nommées GET et POST. GET est la méthode standard pour appeler une page avec des paramètres dans l'URL. POST est la méthode normalement réservée à l'envoi d'un formulaire demandant d'enregistrer des données dans une base de données. Dans votre cas, un changement de langue, la logique voudrait qu'un formulaire en GET soit utilisé. Vérifiez dans le formulaire qui entoure votre bouton de changement de langue que la méthode est bien GET. Par exemple : A la place de : Une seconde possibilité, que je préfère personnellement, est d'utiliser un lien plutôt qu'un bouton pour changer la langue, en utilisant un paramètre d'URL pour définir la nouvelle langue à mettre dans la session. J'espère que cette explication vous aura été utile. Cordialement, Patrick
__________________
Always code as if the guy maintaining your application is a violent psychopath! Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : janvier 2005 Messages : 157 ![]() |
Merci Lordsephiroth et Thes32,
Je pense que vous avez tous deux cerné mon problème, même si Lordsephiroth a anticipé la réponse de Thes32. Effectivement, je connaissais les deux méthodes : il serait en effet plus judicieux d'utiliser GET. Cependant, la méthode POST avait un avantage certain : elle préservait l'URL. Mais bon, je mettrai en place une petite règle de réécriture pour avoir quelque chose du genre : http://www.monsite.com/fr au lieu de : http://www.monsite.com/index.php?lang=fr Merci pour votre aide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com