我在我的开发机器上使用php5和apache2.生产服务器显然是相似的.
我有一个脚本set_language.php,它根据所选语言创建一个会话变量:
<?php
session_start();
$back = $_SERVER['HTTP_REFERER'];
if (isset($_GET['lang'])) {
if ($_GET['lang'] == 'fr')
$_SESSION['lang'] = 'fr';
else if ($_GET['lang'] == 'en')
$_SESSION['lang'] = 'en';
}
header( "Location: $back" ) ;
exit();
?>
Run Code Online (Sandbox Code Playgroud)
然后我在所有页面上包含以下代码:
session_start();
if(isset($_SESSION['lang']) && $_SESSION['lang'] == 'en') {
require('lang_en.php');
}
else if(isset($_SESSION['lang']) && $_SESSION['lang'] == 'fr') {
require('lang_fr.php');
}
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式获得与语言相关的变量:
echo $lang[sometexttotranslate];
Run Code Online (Sandbox Code Playgroud)
在开发服务器上,它按预期工作.我点击链接设置语言,我的会话变量包含lang = en或fr
在生产服务器上:
$ _SESSION ['lang'] = dn或dr(应该是en或fr)
echo $ lang [sometexttotranslate] = d(应该是翻译文本)
知道"d"来自哪里?
这不是重定向/标头/ session_start()问题.
第一次加载时print_r($ _ SESSION): …