小编龚元程*_*龚元程的帖子

php会话变量丢失了

我在我的开发机器上使用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'] = dndr(应该是en或fr)

echo $ lang [sometexttotranslate] = d(应该是翻译文本)

知道"d"来自哪里?

这不是重定向/标头/ session_start()问题.


第一次加载时print_r($ _ SESSION): …

php session-variables

2
推荐指数
1
解决办法
9005
查看次数

标签 统计

php ×1

session-variables ×1