Déconnexion de session

Fermé
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - Modifié par Sinistrus le 25/08/2011 à 21:23
 geoffreyvp - 28 août 2011 à 10:02
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

est ce que t'es sur que ta session expire ?? car ta valeur d'expiration ce rapproche un peu d'une année complete la :p
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 12:45
Si elle expire, je ne sais pas, mais l'on me demande de me reconnecter et ce quelque soit le navigateur utilisé.
D'habitude, si je ferme la page et que je re-ouvre, je reste toujours connecté à ma session, mais là une fois que je change la langue, paf, il se déconnecte carrément !
0
tu change de langue grace a quoi exactement ?
0
ah non pardon , avait pas vu les liens en bas :s
0
pourquoi ne pas recuperer avec un $_GET par exemple ?
je trouve ca plus simple que tes premieres lignes.

ps : j'essaie de t'aider mais vu que je suis un codeur "moyen" je suis pas tres fort non plus ^^
0

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

Posez votre question
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 12:55
Hihi, vu que tu me guide sur le $_GET cela dit que tu es mieux avancé que celui qui à commencé il y a moins de 15 jours :D
0
je suis occupé depuis un petit temps et j'utilise toujours le $_GET parce que c'est plus simple :p
0
si je readapte , ca donne ca. (j'aime bien l'espace comme tu le comprendra :p)
$lang = $_GET['lang'];

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

regarde si ca marche et on verra bien
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 13:05
Non, il fonctionne pas !
Il supprime même la langue par défaut (fr) et m'affiche maintenant mes define :
TXT_HEAD_ADMIN
0
tu as mis TOUT le code de la langues.php ?
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 13:09
oui oui, c'est pas long :
<?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); 
?> 


Si tu as besoin aussi de ma page verif et ma page config et ma page fonction je te les donnes... pttr qu'il y a quelque chose laba qui t'intéresseront ?
0
je comprend pas tres bien. A quoi te sert ta page verif et config ??

avec une seule page , tu peux normalement faire ta page qui se transforme sans probleme. t'aura juste ?lang=en ou un autre qui se rajoute a tes pages si tu veux changer de langue.
0
ou bien on peut jouer avec des $_Sessions aussi...
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
Modifié par Sinistrus le 26/08/2011 à 13:21
A part mes connection à ma base de données, voici ce que contient mon fichier config et verif

ini_set('session.use_trans_sid', 0);  
ini_set('session.use_only_cookies', 0);   
ini_set("url_rewriter.tags", ""); 
session_start(); 

/* Vérifications */ 
if (empty($_SESSION["idara"]["admin"])) { header("location: ".DOSSIER_ADMIN."logout.php"); exit(); } 
$s_idadmin = $_SESSION["idara"]["admin"]["idadmin"]; 
$s_login = $_SESSION["idara"]["admin"]["login"]; 
$s_password = $_SESSION["idara"]["admin"]["password"]; 
$r = mysql_query("select * from Adm_Connection where login='".addslashes($s_login)."' and password='".addslashes($s_password)."' ;"); 
if (mysql_num_rows($r)==0) { header("location: ".DOSSIER_ADMIN."logout.php"); exit(); }
0
ton fichier verif ici est un acces a un dossier admin auquelle tu a uniquement acces. il n'entre pas en compte normalement avec ta page de langue.

tout comme ton fichier config d'ailleurs.
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 13:28
Ah, donc ce qu'il fait est tout à fait normal, c'est pas un beug de code dans ce cas !
Mais alors... comment régler le problème ? :s J'ai déjà défini toutes les phrases du site et bossé dessus comme un fou !
0
tes phrases deja preparées sont sous quelle forme ? TXT_HEAD_ADMIN ou bien des variables du genre $hi ou $autre (avec le $ surtout :p) ??
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 13:34
Comme ça :/
// Index.php
define('TXT_TIT_TABBORD', 		'Tableau de bord');
define('TXT_TIT_SERV', 'Serveur');
define('TXT_DAT_JOUR', 'Nous sommes le :');
define('TXT_HEU_SERV', 'Heure du serveur :');
define('TXT_RAC_SERV', 'Racine du serveur :');
define('TXT_NOM_DOMA', 'Nom de domaine du serveur :');
define('TXT_ADD_IPSE', 'Adresse IP du serveur :');
define('TXT_ADD_IPAC', 'Votre adresse IP actuelle :');
define('TXT_POR_HTTP', 'Port associé au protocole HTTP sur le serveur :'); 
define('TXT_LAN_SERV', 'Langue utilisée par le serveur :');
define('TXT_ENC_SERV', 'Types d'encodage que le serveur peut réaliser :');
define('TXT_VER_SCGI', 'Version des spécifications CGI :');
define('TXT_VER_APAC', 'Version Apache :');
define('TXT_VER_PHP', 'Version PHP :');
define('TXT_VER_MSQL', 'Version MySQL :');
define('TXT_VER_PROT', 'Version du protocole :');
0
imaginons qu'on crée un fichier FR.php pour le francais et un fichier EN.php pour l'anglais.

Le FR est la langue par defaut.
dans les 2 fichiers de langues , on crée la variable $hi = "hi"; ou $hi = "salut"; pour le FR

on va commencer par verifier si un changement de langue veut etre fait en verifiant si le $_GET n'est pas vide

<?php
$lang = $_GET['lang'];

if(empty($lang))
{
include('langues/FR.php');
}
elseif($lang='en')
{
include('langues/EN.php');
}

echo $hi;

?>

normalement la personne francaise arrivera sur un lien avec une fin index.php
tandis que l'anglais (qui aura decider sur la page FR en cliquant sur un petit drapeau anglais) verra un lien avec une fin index.php?lang=en
0
pour afficher ces variables , tu fais comment ? (parce que j'ai jamais vu ca en fait :p)
0
non finalement j'ai regardé ton lien , c'est comme des variables normales ...

si tu veux , je peux m'occuper de te remanier toutes tes phrases anglaises comme ca tu t'occupe de la partie francaise ?
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 13:38
C'est vraiment pas compliqué comme truc, c'est le plus simple que j'ai connu même de toutes sortes de scripts !

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

Je les appel comme ça simplement :
<?php echo TXT_DUJOUR; ?>
0
est ce que ta deja reussi a afficher quelque chose avec ca au moins ? parce que si oui , c'est que ta un probleme avec ton code.
0
on va quand meme essayer de trouver sans trop remanier le code , car si ta deja bossé sur les phrases ,ca serait dommage que ca soit pour rien.

donc essaie ce code ci

$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');
}
?>
0
j'ai oublié un ; apres le $lang = $_GET['lang']
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 14:02
Parse error: syntax error, unexpected T_IF in /homez.349/hightsec/www/administration/langues.php on line 4
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
26 août 2011 à 14:02
<?php
$lang = $_GET['lang']
if(empty($lang)){include('langues/fr-lang.php');}
else if($lang='en'){include('langues/en-lang.php');}
else if($lang='ar'){include('langues/ar-lang.php');}
?>
0
change avec ca

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

le ; etait manquant.
0
et par hasard , elseif ne devrait pas etre en 1 mot ? je peux me tromper mais je crois qu'il est en 1 mot.
0