Déconnexion de session

Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
 geoffreyvp -
Bonjour,

J'utilise ce code pour rendre mon site multi-langue :

Page Langues.php
<?php  
if(isset($HTTP_COOKIE_VARS['lang'])) {$lang = $HTTP_COOKIE_VARS['lang'];} else {$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); } 

if  ($lang=='fr') {include('langues/fr-lang.php');} elseif  
 ($lang=='en') {include('langues/en-lang.php');} elseif  
 ($lang=='ar') {include('langues/ar-lang.php');}  

$expire = 365*24*3600;  

setcookie("lang", $lang, time() + $expire);  
?> 


Mes feuilles appellent la page ainsi :
<?php require("langues.php"); ?>


Et mon fichier langue est bien généré. Jusque là, aucun problème, les caractères s'affichent et les textes sont justes... Mais lorsqu'il s'agit de changer la langue en anglais ou en arabe, là je rencontre un problème, je me déconnecte de ma session et lorsque je me reconnecte, rien ne se passe. L'on croirais que le mode standard (français) se maintient et refuse de passe la main aux autres...

<a href="http://www.monsite/index.php?lang=fr">Français</a>
<a href="http://www.monsite/index.php?lang=en">English</a>
<a href="http://www.monsite/index.php?lang=ar">???????</a>

Comment je peux corriger ce problème svp ?

Qu'avez-vous besoin comme éléments que j'ai omis de mentionner ?

Merci d'avance pour votre aide.

Source du script multi-langue : http://www.phpdebutant.org/article107.php

28 réponses

Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Oui j'ai corrigé tout ça, le ; et le elseif (elseif c'est ma faute dsl).

Là il affiche la langue principale mais me déconnecte toujours lorsque je change la langue.

Fichier langue.php
<?php 

if(isset($HTTP_COOKIE_VARS['lang'])) {$lang = $HTTP_COOKIE_VARS['lang'];} else {$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); }

$lang = $_GET['lang'];
if(empty($lang)){include('langues/fr-lang.php');}
elseif($lang='en'){include('langues/en-lang.php');}
elseif($lang='ar'){include('langues/ar-lang.php');}

$expire = 365*24*3600; 

setcookie("lang", $lang, time() + $expire); 
?>

Lien pour changer la langue :
administration.monsite.net/index.php?lang=en
0
geoffreyvp
 
saurais tu envoyer le contenu du fichier anglais et du fichier francais pour comparer ?
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Oui biensur, donne moi un moment...
0
geoffreyvp
 
euh mais tu appelle la page index.php la...

alors que la page a appelé est la page langue...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
C'est ce que j'ai compris du tuto sur phpdebutant, c'est que si j'ai besoin de traduire, je met la page que je veux donc celle qui se prends en standard, mon index.php et y ajoute ?lang=en

Je penses que si ca ne fonctionnait pas, il n'afficherait pas le français même. Ce que je fais faire, c'est ajouter la langue à la page du login pour tester.
Je te préviens dans quelques minutes du changement
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Oups... j'avais oublié que je dois être connecté à ma session pour qu'il prenne effet.
J'ai eu beaucoup d'erreurs, j'ai dû annuler l'idée :D
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
C'est resolu a part entier !

<?php
if(isset($_GET['lang'])){$lang =$_GET['lang'];}else{
if(isset($_COOKIE['lang'])) {$lang = $_COOKIE['lang'];} else {$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); } 
}
if     ($lang=='fr') {include('langues/fr-lang.php');}
elseif ($lang=='en') {include('langues/en-lang.php');}
elseif ($lang=='ar') {include('langues/ar-lang.php');}  
$expire = 365*24*3600;  
setcookie("lang", $lang, time() + $expire);  
?>


Voilà le résultat final. Seulement lorsque je clique sur la langue, il traduit comme je le souhaite la page d'index. Une fois sorti de l'index, sur n'importe qu'elle autre page, il revient à la langue du serveur HTTP_ACCEPT_LANGUAGE

Donc résolu à 50%, merci de m'aider pour la continuité !
0
geoffreyvp
 
je vais te donner peut etre une solution , je sais pas si elle te conviendra.

pour appeller une page , il demande toujours ton index.php?langue=fr j'imagine.

moi je dirai de creer en fait une session, qui garderait en memoire la langue choisie par l'utilisateur.

on considere que la langue par defaut est francais et que je vais la changer en anglais.

en DEBUT de page
<?php
session_start();
?>
celui ci peut etre placé a l'endroit du choix
<?php
$_SESSION['langue'] = $lang; ($lang a une valeur fr, en ou ar je rappelle)
?>

et donc la t'aura qu'a le rappeller avec des if , elseif ou autres, sauf qu'a la place du $lang tu mets $_SESSION['langue']
voila essaie et puis on verra si ca marche ;)
0