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';
听起来像register_globals
可能启用(虽然该功能已弃用)。您可以运行phpinfo()
并查找register_globals
条目。
假设它已启用,唯一的解决方法是将其修复为php.ini
(您不能用ini_set()
调用覆盖register_globals
)。
解决了谢谢,我永远无法自己调整这个!很棒=) – luca 2011-04-14 12:57:31
那么你使用$ lang来保存langcode,而且还要存储数组信息。也许在langSwitcher.inc中,您应该使用$ langcode来存储会话?
因为你也在设置他们的会话$ lang var。在你的服务器上,它似乎使用了一个对$ lang文件的引用,因此输出设置为$ lang(这是数组)的最新内容,并在本地存储$ lang的实际内容。
无论如何,它可以通过不使用相同的变量名来存储两个不同的项目来解决。
在lang.en.php hai scritto“语言:意大利语”... – Shoe 2011-04-14 13:02:32