Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 02/09/2011, 09h30   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 122
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 122
Points : 13
Points : 13
Envoyer un message via MSN à scorpion11_22
Par défaut Session /Cookie et site multilangue

Bonjour

Voilà je vais essayer d'expliquer le soucis que je rencontre :

Je suis en train de m'entrainer pour faire un site en multilangue en utilisant les sessions avec cookie !
Par contre ce site je le fais sans base de donnée et uniquement en PHP.

L'architecture du site :
Dossier css
Dossier images
Dossier includes
Dossier lang
index.php

Donc dans le dossier include j'ai un fichier lang.php qui sert pour le choix de la langue :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
session_start();
if ((isset($_GET['lang']) && !empty($_GET['lang'])) || (isset($_COOKIE['lang']) && !empty($_COOKIE['lang']))) {
    $_SESSION['lang'] = $_GET['lang'];
    setcookie("lang", $_SESSION['lang'], time() + (3600 * 24 * 365));
}
// Langue par défaut
if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'fr';
 
include('lang/'.$_SESSION['lang'].'_lang.php');
?>
Dans le dossier lang j'ai 3 fichiers pour les langues :
en_lang.php
es_lang.php
fr_lang.php

jusqu'a là rien d'anormal !!

Ensuite le fichier index.php :
en premier j'y inclu mon fichier langue.php
Code :
1
2
3
4
 
<?php
require("includes/langue.php");
?>
ensuite le html et pour la sélection du language je fais comme ceuci :
Code :
1
2
3
4
 
      <span style="margin-left:10px;"><a href="?lang=fr"><img src="images/lang/fr.jpg" title="Fran&ccedil;ais" border="0" /></a><br /></span>
      <span style="margin-left:10px;"><a href="?lang=en"><img src="images/lang/gb.jpg" title="English" border="0" /></a><br /></span>
      <span style="margin-left:10px;"><a href="?lang=es"><img src="images/lang/es.jpg" title="Espa&ntilde;ol" border="0" /></a></span>
Mon soucis c'est que lorsque je change de langue en cliquant sur le drapeau tout va bien la page est bien traduite mais lorsque je change de page je revien au language par défaut !

Merci pour vos éclaircissements !!
__________________
J'aime apprendre et je continurai a apprendre, il n'y a que comme ça qu'on progresse.
scorpion11_22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 12h10   #2
Membre confirmé
 
Homme Arnaud
Inscription : décembre 2004
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 40
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 167
Points : 238
Points : 238
Bonjour,

Il y a quelques temps, j'utilisais ce p'tit bout de script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
/*
Cette page permet de changer de langue. 
On réceptionne :
- la langue choisie en $_GET
- l'adresse où se trouve la personne
*/
if(isset($_GET['ln'])&&(!empty($_GET['ln']))){
	session_start();
	switch($_GET['ln']){
		case 'en': // anglais
		case 'de': // allemand
		case 'ne': // hollandais
		case 'es': // espagnol
		case 'it': // italien
		case 'fr': // Français !!!!!
			// on met la langue choisie en session
			$_SESSION['ln']=$_GET['ln'];
			// et on header sur la page d'où l'on vient :
			if(isset($_GET['u'])&&(!empty($_GET['u']))){
				header('Location:'.$_GET['u']);
			}else{
				// on header sur racine si pas de u :
				header('Location:/');
			}
		break;
		default:
			header('Location:/');
		break;
	}
}else{
	// si la page est appelée par accident, on header sur racine :
	header('Location:/');
}
?>
ln : c'est le param de langue
u : c'est le param de la page courante.

Une fois que la langue était choisie, elle était en include $_SESSION['ln'].'_lng.php dans la page d'index, et cet include était chargé avec des constants.

Ce marchait très bien.

Toi, dans ton cas, il semblerait que ta valeur en session soit réinitialisée.
Essaye dans ta page de faire un echo $_SESSION['lang'];

@+

lenono
lenono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 12h18   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 122
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 122
Points : 13
Points : 13
Envoyer un message via MSN à scorpion11_22
Re'

quand je change de page effectivement la session se remet sur le language par défaut !

Quand je suis sur l'index avec echo $_session['lang'] que je clique sur l'anglais j'ai en qui s'affiche et des que je clique sur une autre page ca revient en fr.

Edit : En fait j'ai finalement trouvé mon erreur qui n'est absolument pas sur les fichiers que je cite dans les messages du dessus mais l'erreur venait de mon fichier menu !
Les liens que j'avais créé etait sans la session lang donc forcement la session n'était pas sauvegardée.
Merci quand même d'avoir pris le temp de me répondre.
__________________
J'aime apprendre et je continurai a apprendre, il n'y a que comme ça qu'on progresse.
scorpion11_22 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 18h37.


 
 
 
 
Partenaires

Hébergement Web