恼人的会话覆盖

时间:2009-10-23 15:49:29

标签: php session

我正在创建一个多语言网站,我决定使用会话来记住当前语言,总体而言它可以正常工作,但有一个我无法修复的错误。 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');
        }

}

如果有人能解释我为什么会这样,以及我如何解决它会很棒 感谢

5 个答案:

答案 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()加载您的会话。