2010-01-16 5 views
1

je dans mon index.php:Comment préserver le statut de langue à l'aide des sessions PHP et les cookies

<?php include_once 'file.php' ?> , j'ai <html> some content </html>

et j'ai cela dans file.php:

<?php 
session_start(); 
header('Cache-control: private'); 

if(isSet($_GET['lang'])) 
{ 
$lang = $_GET['lang']; 

$_SESSION['lang'] = $lang; 

setcookie("lang", $lang, time() + (3600 * 24 * 30)); 
} 
else if(isSet($_SESSION['lang'])) 
{ 
$lang = $_SESSION['lang']; 
} 
else if(isSet($_COOKIE['lang'])) 
{ 
$lang = $_COOKIE['lang']; 
} 
else 
{ 
$lang = 'en'; 
} 

switch ($lang) { 
    case 'en': 
    $lang_file = 'lang.en.php'; 
    break; 

    case 'de': 
    $lang_file = 'lang.de.php'; 
    break; 

    case 'es': 
    $lang_file = 'lang.es.php'; 
    break; 

    default: 
    $lang_file = 'lang.en.php'; 

} 

include_once 'languages/'.$lang_file; 
?> 

J'ai ces 3 fichiers, je veux dire lang.en.php et ainsi de suite ...

et cela ne fonctionne pas, ma page est vide, pas de texte, pourquoi? Qu'est-ce qui ne va pas?

lang.en.php contient

<?php 


$h1 ="HOME"; 
$h2 ="ABOUT US"; 
$h3 ="CONTACT"; 
$h4 ="FAQ"; 

$txt1 = "Here goes txt,Here goes txt,Here goes txt,Here goes txt, 
     Here goes txt,Here goes txt,Here goes txt,Here goes txt, 
     Here goes txt, Here goes txt,Here goes txt,Here goes txt."; 
?> 

Je ne sais pas quel est le problème avec ça ... Que dois-je changer? Quelqu'un peut-il m'aider. Merci.

+1

Qu'est-ce que les fichiers Disse de lang.en.php chario? En outre, qu'est-ce que '$ lang' et' $ lang_file' indeholde si vous imprimez themself? – Wookai

+0

** ne ** préserver le statut de langue à l'aide des sessions ou les cookies. Mais utilisez uniquement des éléments de chaîne d'adresse. sous-domaine (par exemple en.wikipedia.org) est le meilleur choix, puis chaîne de chemin ou de la requête. –

Répondre

1

Vous n'imprimez rien sauf du code HTML. Pour voir le contenu des chaînes dans les fichiers de votre lang.en.php, vous devez les sortir en utilisant une construction de langue echo.

<?php 
echo $txt1; 
?> 

génèrerait:

Here goes txt,Here goes txt,Here goes txt,Here goes txt, 
Here goes txt,Here goes txt,Here goes txt,Here goes txt, 
Here goes txt, Here goes txt,Here goes txt,Here goes txt. 
+0

vous avez att dans index.php, pourquoi ai-je besoin en file.php? – bhunter

+0

Har du att à index.php, vous n'avez pas besoin dans file.php. Le code que vous avez posté des œuvres, de sorte que son Indiquant le problème est probablement avec index.php. Kan du venligst poste din fichier index.php? –

0

Des problèmes tels que ceux-ci se effectivement jamais quand vous utilisez la structuration du code approprié: les structures de contrôle tiret, les contrôleurs de paradis (logique) et des vues (présentation). Vous mélangez beaucoup de choses dans un seul fichier, ce qui rend la lecture et la compréhension du code difficiles. S'il vous plaît essayer de coder avec lisibilité/maintenabilité à l'esprit, même si vous utilisez php.

-1

session_start() doit être au début de votre document.

La session doit commencer avant que quelque chose ne soit envoyé au navigateur.

0

J'ai testé votre code (il est de Bitrepository tutprial droite :)

Ok, le file.php devrait être dans votre function.php si jamais vous en avez un.

Je suppose que vous aviez index.php et fait écho à ces variables à partir de vos fichiers de langue droite comme:

echo $h1; 

echo $h2; 

echo $h3; 

echo $txt1; 

Pour changer de langue, consultez votre file.php, il est précisé dans les cas. Si vous voulez l'anglais:

index.php?lang=en 

index.php?lang=de 

index.php?lang=es 

Et ainsi de suite.

droit facile \(^_^)/

Vérifiez bitrepository pour tutoriel beaucoup plus détaillée. Je voudrais également suggérer d'utiliser define() pour vos fichiers de langue.

ex.

define('TITLE', 'This is the title') 

Deux écho:

echo TITLE; 
0

Vous devez définir tableau dans lang.en.php, lang.ru.php ...

lang.en.php

$lang = array(); 
$lang["PAGE_TITLE"] = "Some title"; 
$lang["MENU_HOME"] = "Home"; 
$lang["HOME_CONTENT"] = "Some content"; 

lang.ru.php

$lang = array(); 
$lang["PAGE_TITLE"] = "Russian title"; 
$lang["MENU_HOME"] = "Russian home"; 
$lang["HOME_CONTENT"] = "Russian content"; ... 

Ensuite, la sortie dans vos pages.

<?php echo $lang["PAGE_HOME"]; ?> 
<?php echo $lang["MENU_HOME"]; ?> 
<?php echo $lang["HOME_CONTENT"]; ?> 
Questions connexes