8721 sujets

Développement web côté serveur, CMS

Pages :
Bonjour à tous,

J'ai un petit soucis de session sur mon site et je n'arrive pas à trouver ce qui se passe (étant donné qu'en local ca marche).

J'ai un bouton qui change la langue


<a href='./index.php?lang=fr'>France</a>
<a href='./index.php?lang=us'>English</a>


Sur ma page index j'ai


<?php session_start();
        if($_SESSION["langue"] == ""){
		echo "La langue est vide";
		if($_SERVER["HTTP_ACCEPT_LANGUAGE"] == "fr"){
			$_SESSION["langue"] = "fr";
		}else{
			$_SESSION["langue"] = "us";
		}
	}
	if($_GET["lang"] != "" && isset($_GET["lang"])){
		echo "La langue ".$_SESSION["langue"]." a été passée en ".$_GET["lang"];
		$_SESSION["langue"] = $_GET["lang"];
	}

?>


Quand je clique sur le bouton ca marche. Par contre si je retourne sur index.php il me dit : "La langue est vide".

Je ne comprend pas Smiley decu j'ai demandé à l'hebergeur si y'avais un problème de session PHP et ils m'ont gentiement répondu d'aller demander sur un forum (Ce que je pige pas parce que si c'est un probleme apache... sur un mutualisé c'est leur probleme non ?). Enfin ca c'est une autre histoire.

Si vous avez une idée Smiley decu

Je préfère ne pas poster l'URL ici mais je peux la donner par MP pour constater le bug en live.
Modifié par ffwrude (23 Nov 2012 - 13:20)
salut...

Déjà, avant toutes choses pourquoi avoir mis un onclick sur les images ?? les entourer avec un a est aussi bien...

Bon sinon ton hébergeur c'est qui ? (si c'est free il faut créer un répertoire session ou un truc de ce genre à la racine)

autrement bien que non obligatoire moi j'utilise session_start();
Haha Smiley smile pardon je l'ai retapé à la main et j'ai bien mis les paranthèses a session_start();

Je suis chez Hosteur
Modifié par ffwrude (23 Nov 2012 - 13:38)
Modérateur
Bonjour,

ffwrude a écrit :

Pour le onclick sur l'image... bah oui c'est vrai. Mais je trouve ca plus lisible comme ca. Question de gout.


Sauf qu'avec ces boutons avec onclick, aucun moyen de changer de langue si le Javascript est désactivé. D'autant plus que je suis plutôt étonné que tu trouves ça plus lisible qu'un simple lien entourant l'image. Smiley ohwell Il n'est pas non plus possible d'utiliser la touche tab pour naviguer d'une langue à l'autre.

Il manque aussi l'attribut alt aux images.

Il y a aussi l'aspect usage de drapeaux qui est discutable. La France n'a pas le monopole de la langue française.

Bref, ça ne respecte pas les bonnes pratiques.
Modifié par Tony Monast (23 Nov 2012 - 13:15)
Modérateur
On s'en éloigne, mais il ne faut pas oublier l'objectif d'Alsacréations. Smiley smile

J'ai édité mon message précédent à quelques reprises pour y ajouter des éléments.

Sur ce, bonne continuation! Smiley smile
Merci de tes réponses.

Que pourrais-je mettre à la place d'un drapeau ? Un texte ? Je regarde sur diverses grandes enseignes et je ne vois que des drapeaux. Quelle serai la bonne pratique ici ?
Modifié par ffwrude (23 Nov 2012 - 13:28)
Modérateur
Les grandes enseignes présentent généralement un grand nombre de pays du monde (ex: site d'Apple). Par exemple, il y a le drapeau de la France, mais aussi deux drapeaux du Canada, un pour l'anglais et l'autre pour le français.

Pour les sites avec seulement deux langues, un texte est plus neutre et ne risque pas de choquer personne. Comme je le disais, la France n'a pas le monopole du français et les États-Unis n'ont pas non plus le monopole de l'anglais.

C'est vrai qu'esthétiquement, un simple texte n'est pas ce qu'il y a de mieux. Je vais devoir y réfléchir. Je dois quitter pour le boulot.

C'est mieux aussi de régler ton problème de session avant. Tu peux garder les drapeaux pour l'instant.
Je vous avoue avoir du mal à comprendre le côté choquant de la chose. Je dois avoir un esprit trop fermé Smiley biggol

Mais effectivement le problème de session est le plus important ici Smiley smile
Modérateur
Pour répondre à ta question, je suis Québécois (Canadien français), alors je ne trouve pas ça totalement naturel de cliquer sur le drapeau d'un autre pays que le mien pour obtenir la langue parlée dans mon pays.

Tout comme un Anglais d'Angleterre pourrait trouver étrange de cliquer sur le drapeau Américain pour obtenir la langue parlée dans son pays (et vice-versa). Sans compter que plus ça va, plus il y a de langues différentes parlées dans un même pays. Faire l'association entre un pays et une langue me semble donc de plus en plus incorrect. C'est mon opinion personnelle, mais je sais que plusieurs la partage. J'ai trouvé un article de quelqu'un qui partage cet avis.

Mais bon, assez parlé de ça. Revenons au sujet principal. Je t'ai envoyé un message privé pour avoir le lien du site et te donner un coup de main. Smiley smile
Modifié par Tony Monast (23 Nov 2012 - 16:49)
Hum...

C'est bizarre qu'il soit paramétré comme ca. Parce que je ferme pas le navigateur en plus je change juste de page. Enfin je vais suivre ta piste.

Je vais partir la mais je check ca ce week end et je te ferais un retour. Merci Smiley smile (j'avais jamais eu ce soucis).
Modérateur
Pour ma part, ça l'affiche uniquement "La langue est vide" quand je ferme le navigateur (Firefox) et que je reviens sur l'index. Le PHPSESSIONID change dans le cookie et les paramètres du cookie sont à Expire End of session (à la fermeture du navigateur).

C'est peut-être l'hébergeur qui a des valeurs par défaut différentes des autres hébergeurs ou de ton serveur local.

À vérifier en tout cas, c'est une bonne piste.

À plus tard!
Modifié par Tony Monast (23 Nov 2012 - 17:25)
Modérateur
Ah non, ça le fait aussi si je change de langue et que je reviens directement sur Home. Le PHPSESSIONID change à nouveau. Je te tiens au courant.
Modifié par Tony Monast (23 Nov 2012 - 17:31)
Modérateur
Sans avoir accès au code source complet, ce n'est pas évident. J'ai utilisé httpfox pour voir les cookies envoyés et reçus.

- Quand on retourne sur index.php, aucun problème. La session est conservée
- Quand on retourne sur Articles-Accueil.html, le serveur nous retourne un nouveau cookie de session.
- Quand on retourne sur Articles-Accueil.html?Lang=fr avec le paramètre lang, aucun problème. La session est conservée

Trois pistes à vérifier :

1. L'expiration des cookies quand on ferme le navigateur.
2. La réécriture d'url qui poserait problème. La désactiver et vérifier si le problème persiste.
3. Vérifier qu'il n'y a pas un code qui traîne quelque part (une condition selon la présence ou non du paramètre lang dans l'url), ou d'autres endroits dans le code où des sessions sont créées.

Sur ce, je te laisse regarder ça ce weekend et j'attends de tes nouvelles.
Modifié par Tony Monast (23 Nov 2012 - 18:00)
Salut,

Bon j'ai une grosse journée donc je regarde ca dans la journée mais surement dans l'aprem.
Lorsque j'avais demandé à Hosteur si le server apache n'était pas mal paramétré la réponse à été : "C'est une erreur de développement. Nous ne pouvons rien faire.".

Donc... Bah je regarde cette aprem et je te tiens au courant.

EDIT: dsl c'est la guerre au taf j'ai pas le temps de taffer sur le perso Smiley decu
Modifié par ffwrude (26 Nov 2012 - 16:17)
Pour ce qui est du drapeau ou autre... Ce que je vois de plus en plus souvent, ce sont les sigles de langues :
FR pour Français
EN pour English
ES pour Espagñol
...

Ou alors les mini formulaires planqué en haut de la page avec juste un champs "select" et un micro-bouton "ok" Smiley cligne

Si ça peut aider...

Pour la session, à vue de nez je dirais que on va sur : Articles-Accueil.html, s'il n'y a pas explicitement la langue en paramètre, il redéfinit simplement une nouvelle session. Il manque sans doute une vérification de la session avant d'en ouvrir une nouvelle.
Modifié par Lothindil (26 Nov 2012 - 09:58)
Salut,

Bon je viens de faire pas mal de test. Et la seule chose que je vois c'est qu'effectivement l'URL rewriting me dégomme la variable de session.

C'est la première fois que je vois ca. Je n'ai absolument aucun soucis en local...

Le cookie est bien mis à 0 (donc a la fermeture du navigateur) et donc la session devrait être gardée lorsque l'on change de menu. C'est vraiment très étrange. Mais au moins je vais pouvoir peut etre trouver une piste sur google.

J'ai essayé de modifier les paramètres avec le set_cookie_params mais rien à faire Smiley decu la session se vide.
Modifié par ffwrude (27 Nov 2012 - 11:15)
Pages :