php阿鲁巴$ _session问题

php阿鲁巴$ _session问题

问题描述:

我在Localhost和服务器“Aruba”上测试此代码。

在本地环境中它完美而上服务器我没有预期的会话值

当我回声出$ _SESSION [“郎”]它输出:

-the正确的国家代码(Ex.'en)

- 在Aruba服务器上$ _SESSION ['lang']输出名为$ lang的数组(您可以在lang.en.php上找到),而不是所需的国家代码! !

我在哪里错了?

感谢

卢卡

home.php

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

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; 

lang.en.ph p

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



$langcode='en'; 

$lang = array(); 

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

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

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

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

在lang.en.php hai scritto“语言:意大利语”... – Shoe 2011-04-14 13:02:32

听起来像register_globals可能启用(虽然该功能已弃用)。您可以运行phpinfo()并查找register_globals条目。

假设它已启用,唯一的解决方法是将其修复为php.ini(您不能用ini_set()调用覆盖register_globals)。

+0

解决了谢谢,我永远无法自己调整这个!很棒=) – luca 2011-04-14 12:57:31

那么你使用$ lang来保存langcode,而且还要存储数组信息。也许在langSwitcher.inc中,您应该使用$ langcode来存储会话?

因为你也在设置他们的会话$ lang var。在你的服务器上,它似乎使用了一个对$ lang文件的引用,因此输出设置为$ lang(这是数组)的最新内容,并在本地存储$ lang的实际内容。

无论如何,它可以通过不使用相同的变量名来存储两个不同的项目来解决。