土曜の昼、学校帰りの昼メシの思い出

ブラウザをリロードしないと、食べたクッキーを表示できないのですがリロードせずに、表示させる方法はないでしょか? 因みに、以下のサイトを参考にしたら表示できました。
そもそも、cookieは一度目では表示できないようなんですが...
よろしく、お願い致します。

javaでのリロード参考サイト
http://www.openspc2.org/reibun/javascript/link/0 …

リロードせずに、cookieを表示させたい
<?php
$val = '<b>ichigo</b>';
setcookie("cake", $val);
if (isset($_COOKIE["cak"])) {
print $_COOKIE["cake"];
}
?>

A 回答 (2件)

まぁあまり深く考えず


「$_COOKIEに収まっているデータはブラウザに保存されているデータ」
と考えればすむかと。

どうしてもphp上で一致させたいなら
setcookie("cake", $val);
した直後に
$_COOKIE["cake"]=$val;
すればよいかと思いますが、ロジックがぶれるのであまりお勧めできません。
    • good
    • 2
この回答へのお礼

ありがとう

ズバリの回答で解決しました。
ありがとございます。

お礼日時:2015/08/13 17:56

基本を身につけずに上っ面だけ取り繕うとするから、おかしな質問になってしまう。


COOKIEとは、Netscapeが導入した技術で、サーバーとUA(ユーザーエージェント)の間でデータを引き継ぐ方法です。
 cookieは、名前、データ、有効期限、提供するサーバー、パス がセットになったデータで、HTTP通信において、サーバーとUAの双方が提供します。
 UAは、そのサーバー/パス/有効期限に一致する物があれば、HTTP要求ヘッダに加えて送信します。
 サーバーは、その要求ヘッダーHTTP_COOKIEがあれば、それを解釈し、必要ならsetcookie:ヘッダーでcookieを発行します。

 要求ヘッダーと応答ヘッダの区別が出来ていないのじゃないですか?
if (isset($_COOKIE["cak"])) {print $_COOKIE["cake"];}
 は「応答ヘッダーに加えるべきcookieがある時にそれを表示しろ!!」に過ぎない。よって、これはブラウザがサーバーに要求して、それに応えてデータが送られてきたときに表示されますよ。
 一方、送るべきクッキーがあるのでしたら、UAから送られてきた要求ヘッダ内のcookieを表示しなければならない。はじめて訪問するサイトでは通常はありませんが、クロスサイトスクリプティングなどで、利用サイトを特定する場合以外は・・
 よって利用すべきデータは、set-cookieの内容ではなく、要求ヘッダに含まれているcookie:の値--これはサーバーによって環境変数HTTP_COOKIEに格納されていますので、それを表示しなければならない。
 ウェブ開発をされているのでしたら、開発ツール( https://addons.mozilla.org/ja/firefox/extensions … )の豊富なfirefoxをお使いだと思いますが、そのアドオンLive HTTP Headers( https://addons.mozilla.org/ja/firefox/addon/live … )を使うとその間のやり取りがわかります。
 要求ヘッダに含まれるcookieなら、環境変数HTTP_COOKIEを表示させれば良いと言うこと。
拙作ですが、環境変数・フォーム・クッキー( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/test. … )を最初に訪問されたときはないはずですが、いったん閉じてなら表示されるはずです。

>ブラウザをリロードしないと、食べたクッキーを表示できないのですが
 これが如何に可笑しな質問かわかりますよね。
・サーバーに提供したcookieは表示させる事は可能です。
・サーバーが提供したcookieは表示させる事は可能です。
 UAが食べたcookieは、UA自体にjavascriptを渡して、それを表示させないとなりません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報