2011-04-14 4 views
0

이 코드는 로컬 호스트와 서버 "Aruba"에서 테스트하고 있습니다.

년 - 올바른 국가 코드 : 지역 환경에서

은 내가이 $ _SESSION [ 'LANG을'] 밖으로 반향 때 출력 예상 세션 값

을 해달라고 동안 서버에서 완벽하게 작동 (예 : 'local')

- 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

답변

1

register_globals이 사용 설정 될 수 있습니다 (해당 기능은 사용되지 않지만). phpinfo()을 실행하고 register_globals 항목을 찾으면서 확인할 수 있습니다.

활성화되어 있다고 가정 할 경우 유일한 해결책은 php.ini으로 수정하는 것입니다 (register_globalsini_set() 호출로 재정의 할 수 없음).

+0

해결 된 문제 덕분에 혼자 힘으로 조정할 수 없었습니다! 위대한 =) – luca

0

그럼 당신은 langcode을 유지하기 위해 $ LANG을 사용하고, 또한 배열 정보를 저장합니다. 아마도 langSwitcher.inc에서 $ langcode를 사용하여 세션을 저장해야합니다.

세션에서 $ lang var을 설정하기 때문에. 서버에서는 $ lang 파일에 대한 참조를 사용하고 있으므로 $ lang (배열)에 설정된 최신 내용을 출력하고 로컬에서는 $ lang의 실제 내용을 저장합니다.

어쨌든 동일한 변수 이름을 사용하여 두 개의 다른 항목을 저장하지 않아도 해결할 수 있습니다.