Intereting Posts
Как я могу программно вернуть деньги с помощью PayPal? Как CodeIgniter сохраняет данные сеанса даже при закрытии браузера? Возможность запуска функции обновления БД при выборе выпадающего меню Работа с пространством имен Zend Session для нескольких запросов Невозможно / отключить поле выбора в поле флажка с несколькими формами – JQuery Как использовать несколько баз данных в Laravel SQL: как выбрать одну запись в день, предполагая, что каждый день содержит более 1 значения MySQL Преобразование числа с запятой в виде десятичной точки для плавания вызов одной функции php из другого? PHP: Как определить, содержит ли строка какие-либо специальные символы? Curl Post-server не возвращает ответ DVLA-соскабливание ASPx getJSON не работает Вставка текста поля ввода в текстовое поле с помощью JavaScript Не удается удалить php set cookie Плагин Symfony sfDoctrineActAsTaggablePlugin не работает

Изменение переменных сеанса PHP с помощью файла include

Этот вопрос основан на предыдущем вопросе, который я задал, но становится беспорядочным с редактированием, поскольку я не был уверен, где проблема может возникнуть. (Пожалуйста, сообщите, должен ли этот вопрос быть закрыт)

Я разрабатываю с PHP 5.3.3 в среде разработки + Apache 2 (там работает мой код) Производственный сервер имеет PHP 5.2.6 и тот же сервер (тот же код здесь не работает)

Благодаря Melsi по другому вопросу мне удалось сузить проблему до нескольких строк кода.

Проблема заключается в следующем: во включенном файле я запускаю сеанс и проверяю переменную. В зависимости от этой переменной сеанса я включаю языковой файл.

Структура выглядит так:

-index.php INCLUDE -menus.php -lang_fr.php -lang_en.php 

Файлы следующие:

index.php

 <?php //SET LANGUAGE if (isset($_GET['lang']) && $_GET['lang'] == 'fr') { $_SESSION['lang'] = 'fr'; } else if (isset($_GET['lang']) && $_GET['lang'] == 'en') { $_SESSION['lang'] = 'en'; } else { $_SESSION['lang'] = 'en'; } include_once 'include/menus.php'; ?> <html> <head> <title>building...</title> </head> <body> <?php echo($links); ?> <br><br> print_r($_SESSION); <br><br> <?php print_r($_SESSION); ?> </body> </html> 

MENUS.PHP

 <?php session_start(); if(isset($_SESSION['lang']) && $_SESSION['lang'] == 'en') { include_once('lang_en.php'); } else if(isset($_SESSION['lang']) && $_SESSION['lang'] == 'fr') { include_once('lang_fr.php'); } else { $_SESSION['lang'] = 'fr'; include_once('lang_fr.php'); } $links = <<<EOT <a href="/index.php?lang=en">English</a>&nbsp;&nbsp; <a href="/index.php?lang=fr">French</a> EOT; ?> 

LAN_EN и FR.PHP

 <?php $lang['test'] = "Test"; ?> 

Это на моем локальном сервере работает и отображает правильные переменные сеанса, когда я нажимаю ссылки.

На рабочем сервере я получаю:

-Первая нагрузка: Массив ([lang] => fr) (по умолчанию, правильно)

-Нажмите ссылку по-английски: Массив ([lang] => Tn)

-Щелкните по французской ссылке: Массив ([lang] => Tr)

Если я изменю в файле языка «Тест» на «Pest», результаты выше будут «Pn» и «Pr»,

Я хотел бы знать, если что-то не так с кодом или с сервером создания конфигурации (по их поддержке нет ничего плохого), и если да, то в чем проблема.

Примечание. Проблема исчезает, когда я удаляю include в menus.php

Related of "Изменение переменных сеанса PHP с помощью файла include"