Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/11/2011, 23h41   #1
Membre régulier
 
Avatar de kéraunos
 
Homme
Inscription : janvier 2005
Messages : 157
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 157
Points : 71
Points : 71
Par défaut Avertissement avec session_restart()

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 !
kéraunos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 14h33   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Envoyé par kéraunos Voir le message
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.
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
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 08h45   #3
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
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 :

Code :
1
2
 
<form action="..." method="get">
A la place de :

Code :
1
2
 
<form action="..." method="post">
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
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 09h12   #4
Membre régulier
 
Avatar de kéraunos
 
Homme
Inscription : janvier 2005
Messages : 157
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 157
Points : 71
Points : 71
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.
kéraunos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h31.


 
 
 
 
Partenaires

Hébergement Web