【问题标题】:PHP4 including file during sessionPHP4 包括会话期间的文件
【发布时间】:2010-04-13 13:52:39
【问题描述】:

我正在尝试在我的网页上添加第二语言。我决定为不同的语言使用不同的文件,通过路径区分 - language/pl/projects.ln 包含波兰语文本,language/en/projects.ln - 英语。这些扩展只是为了区分语言文件,内容是简单的php:

$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"] 时都可以正常工作。

请帮忙。

【问题讨论】:

    标签: session include php4


    【解决方案1】:
    1. 你能测试一下 session_start() 的返回值吗 - 如果它是假的,它启动会话失败。
    2. 在向浏览器输出任何内容之前是否会调用它?如果标头已经发送并且您的 error_reporting 级别太低,您甚至不会看到错误消息。
    3. 愚蠢,但是 - 你是否将 $_SESSION['lang'] 的值设置为像“en”这样的有效值?当您在 else 块中使用它作为默认值而不是“pl”时,英文翻译是否正确加载?
    4. "Jakiś tam tekst na temat usłóg" -> "usług" :)

    你能告诉我们这个输出是什么吗:

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

    【讨论】:

      【解决方案2】:

      会话开始正常,但我不小心设法修复了它。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-02
        • 2011-04-25
        • 1970-01-01
        • 2017-08-01
        • 2020-08-31
        • 2010-12-18
        相关资源
        最近更新 更多