0

3 つの異なる言語で動作する小さな PHP Web サイトを作成しました。これらの言語は、$_GET または $_COOKIE を介して設定でき、$_GET が最初にチェックされるため、必要に応じて Cookie を上書きできます。必要な言語を決定したら、すべての翻訳を保持するファイルを含め、将来の使用のために Cookie を設定します。コードは次のようになります。

<?php
if (isset($_GET['language'])) {

    // if language in $_SET is English, load english translation and set a cookie for the future.
    if ($_GET['language'] == 'EN') { 
        setcookie('language','EN', time()+31536000);
        include 'tekstenEngels.php';

    // if language in $_SET is French, load french translation and set a cookie for the future.
    } elseif ($_GET['language'] == 'FR') { 
        setcookie('language','FR', time()+31536000);
        include 'tekstenFrans.php';

    // lastly if language in $_SET is Dutch, load Dutch translation and set a cookie for the future
    } else { 
        setcookie('language','NL', time()+31536000);
        include 'tekstenNederlands.php';
    }

// the same but for cookies in case this isn't the first visit
} elseif (isset($_COOKIE['language'])) { 
    if ($_COOKIE['language'] == 'EN') {
        include 'tekstenEngels.php';
    } elseif ($_COOKIE['language'] == 'FR') {
        include 'tekstenFrans.php';
    } else {
        include 'tekstenNederlands.php';
    }
}
?>

これは私の locahost では問題なく動作しますが、Web サーバーで使用すると Cookie を正しく読み書きできないようです。私が見逃している/間違っている可能性のあるアイデアはありますか?

4

3 に答える 3

0

php.ini ファイルで Cookie が許可されていることを確認してください。そうでない場合は、 session_set_cookie_paramsを調べることをお勧めします。

于 2013-11-09T17:02:40.043 に答える
0

コードが同じでも結果が異なる場合は、Web サーバーの構成を指しています。という名前の次のファイルを作成しますphpinfo.php

<?php
phpinfo();
?>

localhost と Web サーバーで参照し、Cookie/セッション関連の構成オプションの結果を比較します。

于 2013-11-09T17:05:55.947 に答える
0

この質問をゲストとして投稿しました。すべての Cookie をクリアして Web サイトの Cookie の検索を高速化しているときに、この Web サイトから「ログアウト」したため、質問を更新できなくなりました。

言語をチェックするためにほぼ同じphpコードを使用する2つの異なるページがありました。「ホーム」ページ(index.php)と「詳細」ページ(info.php)です。唯一の違いはリダイレクトでした。index.php ページで言語を設定すると、ユーザーは index.php ページに戻り、info.php ページでは info.php ページに戻りました。

まだ不明な理由で、index.php ページで言語を変更すると Cookie が正しく保存され、info.php ページで同じことをしてもうまくいかなかった場合、ページを更新して動作させる必要がありました。 EXACT SAMEコードを使用しているため、本当にわかりません。

ただし、info.php ページの言語コードを変更して、info.php ページではなく index.php にリダイレクトすると、突然すべてが機能しました。

わお。これにはまったく論理がありません。

この問題は修正されましたが、方法はわかりません...サーバー構成に関係があると思いますが、これにアクセスできないため、そこに変更を加えることができません。

この質問はクローズされる場合があります。

于 2013-11-09T17:45:43.483 に答える