PHP4, включая файл во время сессии - PullRequest
1 голос
/ 13 апреля 2010

Я пытаюсь разместить второй язык на своей веб-странице. Я решил использовать разные файлы для разных языков, разделенных путем - language/pl/projects.ln содержит польский текст, language/en/projects.ln - английский. Эти расширения просто отличают языковые файлы от других, содержимое просто php:

$lang["desc"]["fabrics"]["title"] = "MATERIAŁY";
$lang["desc"]["fabrics"]["short_text"] = "Jakiś tam tekst na temat materiałów";
$lang["desc"]["services"]["title"] = "USŁUGI";
$lang["desc"]["services"]["short_text"] = "Jakiś tam tekst na temat usłóg";

А затем на странице индекса я использую это так:

session_start();  
if (isset($_SESSION["lang"])) {  
    $language = $_SESSION["lang"];  
} else {  
    $language = "pl";  
}  
include_once("language/$language/projects.ln");
print $lang["desc"]["fabrics"]["title"];

Проблема в том, что если переменная сеанса не установлена, все работает нормально, и отображается содержимое элемента массива, но как только я изменяю и устанавливаю $_SESSION["lang"], ничего не отображается. Я проверил, работает ли само включение как положено, поместив print "sth"; в начале файла projects.ln, и это прекрасно работает как с $_SESSION["lang"], так и без него.

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 13 апреля 2010
  1. Можете ли вы проверить возвращаемое значение session_start () - если оно ложно, то не удалось запустить сеанс.
  2. Он вызывается перед выводом чего-либо в браузер? Если заголовки уже отправлены и ваш уровень error_reporting слишком низок, вы даже не увидите сообщение об ошибке.
  3. Глупо, но - вы устанавливаете значение $ _SESSION ['lang'] на допустимое значение, например "en"? Правильно ли загружается английский перевод, когда вы используете его как значение по умолчанию в блоке else вместо "pl"?
  4. "Jakiam tam tekst na temat usłóg" -> "usług":)

Можете ли вы сказать нам, что выводит один:

if(session_start()) {
    echo SID, '<br/>';
    if(isset($_SESSION['lang'])) {
        echo 'lang = "',$_SESSION['lang'], '"';
    }
}
0 голосов
/ 13 апреля 2010

Сессия начинается нормально, и случайно мне удалось это исправить.

Я переименовал $_SESSION['lang'] в $_SESSION['curr_lang'], и теперь он работает нормально. Он выглядит так, как будто ему не нравятся переменная массива и сеанса с одинаковым именем (?).

...