【发布时间】:2009-07-01 19:35:29
【问题描述】:
我正在尝试使用几种语言制作我的网站。每个页面都包含配置文件,它在会话中检查变量“lang”。如果不存在,将被重定向到语言选择页面。选择后你会来到之前的页面。但它仅适用于 Mozilla Firefox。在语言检查后的其他浏览器中,我总是得到这个页面(语言检查)。我做错了什么? 配置文件:
// Here is session start...
if (!isset($_SESSION['site_lang']))
{
$_SESSION['page_refer'] = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
echo '<meta http-equiv="Refresh" content="0; URL=lang_choose.php">';
exit;
}
else
{
require_once 'languages/'.$lang.'.php';
}
?>
lang_choose.php:
// Session start
@extract($_POST);
if (isset($_POST['lang']))
{
$lang = $_POST['lang']; $lang = replace($lang);
$_SESSION['site_lang'] = $lang;
echo '<meta http-equiv="Refresh" content="0; URL='.$_SESSION['page_refer'].'">';
}
else
{
// Showing form with flags... which returns var 'lang'
}
编辑: 如果有
< input type="image" src="img/langs/en.png" width="290" height="200" border="1" name="lang" value="en" />
在形式上它在其他浏览器中不起作用(除了 mozilla) 但如果我使用:
< input type="submit" name="lang" value="en" />
一切都很好。有什么想法吗?
谢谢。
【问题讨论】:
-
我不认为这与启用/禁用 cookie 有关吗?抱歉,我对 PHP 了解不多,但这个问题让我很吃惊。
-
别忘了,我在一台电脑上用其他浏览器测试过。只有 Firefox 可以正常工作。 (在所有浏览器中启用 cookie)
-
将内容属性改为等待10秒而不是0,然后在页面上查看源代码,确保“URL=...”部分中的URL正确。
-
嗯,好像脚本没有得到 lang-var...