PHP4包括会话期间的文件

时间:2010-04-13 13:52:40

标签: session include php4

我正在尝试在我的网页上添加第二语言。我决定使用不同语言的不同文件分开路径 - language/pl/projects.ln包含波兰语文本,language/en/projects.ln - 英语。那些扩展只是告诉其他语言文件,内容很简单:

$lang["desc"]["fabrics"]["title"] = "MATERIAŁY";
$lang["desc"]["fabrics"]["short_text"] = "Jakiś tam tekst na temat materiałów";
$lang["desc"]["services"]["title"] = "USŁUGI";
$lang["desc"]["services"]["short_text"] = "Jakiś tam tekst na temat usłóg";

然后在索引页面上我这样使用它:

session_start();  
if (isset($_SESSION["lang"])) {  
    $language = $_SESSION["lang"];  
} else {  
    $language = "pl";  
}  
include_once("language/$language/projects.ln");
print $lang["desc"]["fabrics"]["title"];

问题是如果没有设置会话变量,一切正常,数组项目内容会显示但是一旦我改变并设置$_SESSION["lang"],就不会显示任何内容。我测试了包含本身是否正常工作,方法是将print "sth";放在projects.ln文件的开头,并且可以$_SESSION["lang"]设置和取消设置。

请帮忙。

2 个答案:

答案 0 :(得分:1)

  1. 您可以测试session_start()的返回值 - 如果为false,则无法启动会话。
  2. 在向浏览器输出任何内容之前是否正在调用它?如果标题已经发送且您的error_reporting级别太低,您甚至都不会看到错误消息。
  3. 愚蠢,但是 - 你是否将$ _SESSION ['lang']的值设置为有效值,如“en”?当您将其用作else块中的默认值而不是“pl”时,英文翻译是否正确加载?
  4. “Jakiśtamtekst natematusłóg” - > “usług”:)
  5. 你能告诉我们这个输出是什么:

    if(session_start()) {
        echo SID, '<br/>';
        if(isset($_SESSION['lang'])) {
            echo 'lang = "',$_SESSION['lang'], '"';
        }
    }
    

答案 1 :(得分:0)

会话开始很好,不小心我设法解决了。

我将$_SESSION['lang']重命名为$_SESSION['curr_lang'],现在它可以正常工作了。它接缝就像它不喜欢具有相同名称的数组和会话变量(?)。