【发布时间】:2011-12-05 20:32:57
【问题描述】:
我在我的开发机器上使用 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();
?>
然后我在所有页面上包含以下代码:
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');
}
我可以通过以下方式获得与语言相关的变量:
echo $lang[sometexttotranslate];
在开发服务器上,它按预期工作。我点击链接设置语言,我的会话变量包含 lang=en 或 fr
在生产服务器上:
$_SESSION['lang'] = dn 或 dr(应为 en 或 fr)
echo $lang[sometexttotranslate] = d(应该是翻译文本)
知道“d”是从哪里来的吗?
这不是重定向/标头/session_start() 问题。
首次加载时打印_r($_SESSION):
数组 ( [lang] => fr )
print_r($_SESSION) 点击英文链接(上面的set_lang.php)后:
数组([lang] => dn)
print_r($_SESSION) 点击法语链接(上面的set_lang.php)后:
数组([lang] => dr)
登录后打印_r($_SESSION):
数组([lang] => dr [valid] => 1 [pseudo] => GYC [uid] => 3)
【问题讨论】:
-
@Ignacio 我不知道问题的上下文是什么,但我完全同意。炸脆的小块美味,应该是每道菜的基础。
-
print_r 会话显示什么,也许也比较会话 id。
-
@Melsi:我用 print_r 结果更新了问题
标签: php session-variables