2009-07-01 2 views
0

私はいくつかの言語で自分のサイトを作ろうとしています。すべてのページにはconfigファイルがあり、セッション中に変数 'lang'をチェックします。存在しなければ、wangは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' 
    } 

EDIT:

< 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

これは、クッキーを有効/無効にすることとは関係ありません。申し訳ありませんが、私は本当にそれほど多くのPHPを知っていませんが、これは以前私を噛まれています。 –

+0

と、1台のコンピュータで別のブラウザでテストしたことを忘れないでください。 Firefoxのみ正常に動作します。 (すべてのブラウザでCookieが有効になっています) – Ockonal

+0

コンテンツ属性を0ではなく10秒間待機させてから、ページのビューソースを実行して「URL = ...」部分のURLが正しいことを確認します。 –

答えて

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

それは役に立たない=( – Ockonal

+0

私はいくつかの変更を加えた。今でも302ヘッダを与え、JavaScriptを使ってリダイレクトしようとする。 ini_set( 'display_errors'、 'On');をファイルの先頭に追加することをお勧めします。解析エラーがない場合 –

0

場所ヘッダーを設定すると動作しない場合は、JavaScriptをリダイレクトしてみてください。

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

をあなたは、ヘッダーを使用しない場合(「場所:」); あなたはexit()またはdie()を後で追加します。プログラムが最後まで実行され、一部のブラウザではそれを受け付けない場合もありますので、場合によってはセキュリティを致命的に危険にさらす可能性があります。

関連する問題