Cookieの設定方法に関するいくつかのPHPチュートリアルを行っています。 CookieがFF4とIE9に正常に設定されていることに気付きましたが、Chrome(11.0.696.60)には設定されません。 PHPファイルはXAMPP(localhost)から提供されました。
私はw3schoolsの例を試しました:
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
そして このサイト から(localhost環境の場合):
<?php
setcookie("username", "George", false, "/", false);
?>
前もって感謝します。
IPアドレスとlocalhost
のCookieを無効にすることは、設計上の決定事項でした。参照: https://code.google.com/p/chromium/issues/detail?id=56211
この問題を回避する方法は次のとおりです。
/etc/hosts
を使用するには127.0.0.1 localhost.com
)。たとえば、 [〜#〜] php [〜#〜] の場合:
setcookie(
$AUTH_COOKIE_NAME,
$cookie_value,
time() + cookie_expiration(),
$BASE_DIRECTORY,
null,
false,
true
);
ここで、値null
は、ドメインを設定しないことを示します。
注:ドメインを設定しないと、Cookieがサブドメインから見えなくなります。
ドメインはNULLと等しくなければなりません。
&有効期限を指定する必要があります。すなわち、
setcookie("username", "George", time() + (20 * 365 * 24 * 60 * 60), "/", NULL);
これは、Chromeの「開発ツール」機能のバグのようです。 Cookieを設定しようとして(取得せず)ずっと、他のブラウザーで機能していました。 FFのCookie表示セクションを信頼するか、IEのCookieのファイルを見つけることを想定して、機能しました。 In Chrome「開発者ツール」の[Cookie]セクションに依存していました([開発者ツール]> [リソース]> [Cookie])。
さらに一歩踏み込んで、実際にWHTにあるこのスクリプトを使用してCookieの値を出力することにしました( Natcowebによる投稿 ):
<?php
setcookie('test', 'This is a test', time() + 3600);
if(isset($_COOKIE['test'])){
$cookieSet = 'The cookie is ' . $_COOKIE['test'];
} else {
$cookieSet = 'No cookie has been set';
}
?>
<html>
<head><title>cookie</title></head>
<body>
<?php
echo $cookieSet;
?>
</body>
</html>
そして、Chrome(私は得る:「クッキーはこれはテストです」)を含むすべてのブラウザで機能しました!しかし、ChromeのCookieインスペクタは「このサイトにはクッキーがありません」と表示し続けます。 Chromeの設定(オプション>フードの下>コンテンツ設定>すべてのCookieとサイトデータ)に保存されているCookieのリストを見つけて、最終的にCookieを見つけました(確認する手順は増えましたが、少なくとも開発者ツールよりも正確です)!
結論:クッキーは設定されていましたが、Chromeの開発ツールは何らかの理由でそれを見ることができません。
システムの日付を確認しましたか? $ dateそしてそれが古い時間なら、時間を変更する必要があります$ date -s 2007.04.08-22:46 + 0000
これがお役に立てば幸いです。私は同じ問題を抱えていましたが、うまくいきました
私は以下のように試したときに同じ問題に直面しました
setcookie("gb_role",base64_encode($_SESSION["role"]),time()+60*60*24*30);
下に変更したとき
setcookie("gb_role",base64_encode($_SESSION["role"]),time()+2592000);
私はうまく働いた、違いはtime()+ 60 * 60 * 24 * 30ではなく、time()+いくつかの数値の仕事でした。私はそれが意味をなさないことを知っていますが、うまくいきました。