0

更新: ローカル マシンのホスティング、特に使用されている短いドメイン名 ( '.t'. 実際の(実際の)ドメイン名を使用するリモートサーバー上の同じコードは正常に機能します。

2 つのドメイン (ルートとそのサブドメイン) があり、どちらも同じ Web サーバーのディレクトリを参照して実行されているため、まったく同じスクリプトで作業しています。(私は自宅のコンピューターの Windows XP で Apache/PHP を実行しているので、ローカル ホストに短い名前 (それぞれ「t」と「at」) を使用することにしました)。

session_set_cookie_params(
          24*3600, // 24 hours 
          '/',     // all paths
          '.t',    // 't' and all sub-domains
          FALSE,   // not secure
          FALSE    // not http-only
     ); 

session_start();

if ($_SERVER['HTTP_HOST'] == 't') 
    setcookie(
            'test',           // cookie name
            'yes',            // cookie value
            time() + 24*3600, // expires after 24 hours
            '/',              // all paths
            '.t',             // t and all subdomains
            FALSE,            // not secure
            FALSE             // not http-only
        );

echo $_SERVER['HTTP_HOST'] . '<br>';

print_r($_COOKIE);

ここにルートローカルホスト用のものがあります:

t 
Array ( [PHPSESSID] => 23lhahncni8ekeqj3j02u7qlq5 [test] => yes )

サブドメインの場合:

a.t 
Array ( )

ご覧のとおり、サブドメインの $_COOKIE 配列は空ですが、対応する Cookie はブラウザーで確認できます (正確には Firebug - サブドメインのページが開いているタブでこれら 2 つの Cookie を確認できます)。なぜそれが起こっているのかわかりません。

両方のドメインの $_COOKIE[test] にアクセスする必要があります。どうすればそれを達成できますか?

4

1 に答える 1