2009-07-01 82 views
0

我正在嘗試使用幾種語言創建我的網站。每個頁面都包含配置文件,在會話中檢查變量'lang'。如果它不存在,將被重定向到朗選擇的頁面。選擇之後你會來到之前的頁面。但它只適用於Mozilla Firefox。在其他瀏覽器語言檢查後,我總是得到這個頁面(lang檢查)。我做錯了什麼? 配置文件:PHP +使用會話重定向

// 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" /> 

一切都很好。有任何想法嗎?

謝謝。

+3

我不認爲這與cookie被啓用/禁用有關嗎?對不起,我真的不知道那麼多的PHP,但是之前這讓我感到困惑。 – 2009-07-01 19:39:03

+0

不要忘記,我測試1臺電腦與另一臺瀏覽器。只有Firefox正常工作。 (在所有瀏覽器中啓用cookies) – Ockonal 2009-07-01 19:40:34

回答

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>'; 
?> 

還要注意的是使用<meta>標籤的重定向是discouraged by the W3C

0

嘗試使用JavaScript重定向如果設置位置標頭不起作用:

echo '<script>window.location.href="',$_SESSION['page_refer'],'"</script>'; 
0

如果使用頭(「位置:」);因爲程序會繼續運行到最後,有些瀏覽器甚至可能不接受它,所以它可能會在有些情況下危及安全。