PHP +重定向会话

Max*_*rai 0 php session redirect

我正在尝试用几种语言制作我的网站.每个页面都包含config-file,它会在会话中检查变量'lang'.如果它不存在,将被重定向到lang选择的页面.选择之后你会来到这个页面.但它仅适用于Mozilla Firefox.在语言检查后的其他浏览器中,我总是得到这个页面(lang检查).我做错了什么?配置文件:

// 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';
}
?>
Run Code Online (Sandbox Code Playgroud)

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'
  }
Run Code Online (Sandbox Code Playgroud)

编辑: 如果有

< input type="image" src="img/langs/en.png" width="290" height="200" border="1" name="lang" value="en" />
Run Code Online (Sandbox Code Playgroud)

在形式上它不适用于其他浏览器(除了mozilla)但如果我使用:

< input type="submit" name="lang" value="en" />
Run Code Online (Sandbox Code Playgroud)

一切都是好的.有任何想法吗?

谢谢.

Bra*_*ons 6

尝试使用它来执行重定向:

<?php
header('HTTP/1.1 302 Found');
header('Location: ' . $_SESSION['page_refer']);
// And just in case that doesn't work
echo '<html>',
     '<head>',
     '<title>Redirect</title>',
     '</head>',
     '<body>',
     '<script type="text/javascript">',
     'window.location.href = "' . $_SESSION['page_refer'] . '";',
     '</script>',
     '<a href="' . $_SESSION['page_refer'] . '">Click here to continue</a>',
     '</body>',
     '</html>';
?>
Run Code Online (Sandbox Code Playgroud)

另请注意,W3C不鼓励使用<meta>标记重定向.