更新: ローカル マシンのホスティング、特に使用されている短いドメイン名 ( '.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] にアクセスする必要があります。どうすればそれを達成できますか?