php Aruba $ _session проблема - PullRequest
       0

php Aruba $ _session проблема

0 голосов
/ 14 апреля 2011

Я тестирую этот код в Localhost и на сервере "Аруба".

В локальной среде он работает идеально, в то время как на сервере у меня нет ожидаемого значения сеанса

Когда я отображаю $ _SESSION ['lang'], он выводит:

- правильный код страны (например, 'en') в localhost

- На сервере Аруба $ _SESSION['lang'] выводит массив с именем $ lang (который вы можете найти на lang.en.php) вместо необходимого кода страны !!

Где я ошибаюсь?

спасибо

Luca

my home.php

require_once('/web/htdocs/www.mywebsite.com/home/includes/langSwitcher.inc');
echo $_SESSION['lang'];
[..]

my langSwitcher.inc

session_start();
header('Cache-control: private'); // IE 6 FIX

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

// register the session and set the cookie
$_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'];
$_SESSION['lang']=$lang;
}
else
{
$lang = 'en';
$_SESSION['lang']=$lang;

}

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

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

}

include_once $lang_file;

my lang.en.php

/*
-----------------
Language: Italian
-----------------
*/



$langcode='en';

$lang = array();

$lang['PAGE_TITLE'] = 'pagetitle';

$lang['HEADER_TITLE'] = 'title header ';

$lang['SITE_NAME'] = 'name site';

$lang['HEADING'] = 'title';

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Звучит так, как будто register_globals может быть включено (хотя эта функция устарела). Вы можете узнать, запустив phpinfo() и ища запись register_globals.

Если он включен, единственное решение - исправить его в php.ini (вы не можете переопределить register_globals с помощью вызова ini_set()).

0 голосов
/ 14 апреля 2011

Хорошо, вы используете $ lang для хранения langcode, но также и для хранения информации о массиве. Возможно, в langSwitcher.inc вы должны использовать $ langcode для хранения сессии?

Поскольку вы также настраиваете переменную $ lang в сеансе их. На вашем сервере, похоже, используется ссылка на файл $ lang, и для этого выводится последний контент, установленный в $ lang (который является массивом), а на локальном он хранит фактическое содержимое $ lang.

В любом случае, это можно решить, не используя одно и то же имя переменной для хранения двух разных элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...