我正在创建一个多语言网站,我决定使用会话来记住当前语言,总体而言它可以正常工作,但有一个我无法修复的错误。 1)我加载页面,它在保加利亚正确显示 2)我添加'& lang = en'来测试它是否正常工作,确实如此 3)当我删除'& lang = en'并将其删回保加利亚语时,它不应该留在英语中
这是页面标题中的内容
if(isset($_GET['lang'])){
$lang = htmlspecialchars($_GET['lang']);
lang($lang);
}
if(!isset($_SESSION['slang'])){
lang('bg');
}else {
lang($_SESSION['slang']);
}
这是我处理语言切换的函数
function lang($lang=''){
if($lang=='bg'){
$_SESSION['slang'] = 'bg' ;
include_once('./includes/bulgarian.php');
}
if ($lang == 'en'){
$_SESSION['slang'] = 'en' ;
include_once('./includes/english.php');
}else {
$_SESSION['slang'] = 'bg' ;
include_once('./includes/bulgarian.php');
}
}
如果有人能解释我为什么会这样,以及我如何解决它会很棒 感谢
答案 0 :(得分:4)
确保您在每个页面上调用session_start
。我在我的电脑上试了一下,没有session_start就得到了你的结果。当我添加它时,它可以按预期工作。
您可以尝试使用echo session_id();
查看会话是否在任何页面上启动
答案 1 :(得分:2)
根据您编写的代码判断代码是否有用,您应该检查$ _SESSION是否实际跨页。
您使用的是:session_start();吗?
答案 2 :(得分:1)
如果我是你,我会使用Gnu的gettext规范:http://en.wikipedia.org/wiki/Gettext
答案 3 :(得分:0)
浏览器缓存?你能在浏览器中清除所有保存的信息,然后试试吗?
答案 4 :(得分:0)
请致电session_start()
加载您的会话。