0

重複の可能性:
setcookie() の直後に $_COOKIE にアクセスする

そのため、以下のコードを使用して、サイトに多言語機能を追加しています。

if(isset($_GET['lang']) && $_GET['lang'] != ""){
setcookie("lang", $lang, time()+360*360*3600);
}elseif(!isset($_COOKIE["lang"]) || $_COOKIE["lang"] == ""){
setcookie("lang", "en", time()+360*360*3600);
}
include 'lang/'.$_COOKIE["lang"].'.php';

このコードが初めて実行されると、`$_COOKIE["lang"] が見つからないため、ファイルを開くことができませんが、ページを更新すると問題なく読み込まれます。私は何が間違っているのだろうと思っていましたか?

4

1 に答える 1

2

Cookie は、リクエストを行ったときにのみ設定されます。

それがどのように機能するかです(すべてのリクエストで送信されます)。そして、あなたはまだ同じリクエストにいるので、それはまだそこにありません.

ただし、独自に設定できます。

if (isset($_GET['lang']) && $_GET['lang'] != "") {
    $_COOKIE['lang'] = $lang;
    setcookie("lang", $lang, time()+360*360*3600);
} elseif ...

それはおそらくあなたが探している回避策です。

于 2012-06-02T21:36:22.067 に答える