HPを見ているブラウザーが cookie が有効かどうか
しらべたいのですが、よくある cookie の書き込みと
読み出しのサンプルを使って以下のようなスクリプトを
考えました。


$cookie_flg = 1;

print &setCookie("CHECK", $cookie_flg);

# Cookie の値を得る

&getCookie();
$cookie_flg = $COOKIE{'CHECK'};

if ($cookie_flg eq '') {

$cookie_flg = 0; # Cookie が使えない

}

return $cookie_flg;


・・・これでわかるでしょうか?
ブラウザーでは実際に、cookie が使える状態
なのですが、アクセス最初の1回目は 0 が返って
くるのです。
( 2回目以降は 1 が返ってきて望みどおりです )
ひょっとして、cookie の仕様として、書き込んで
から、すぐに読み出そうとしても、読めないもの
のでしょうか?
それとも、cookie を書き込んだあと、一旦、
print "Content-type: text/html\n\n";
で閉めてから、読み出さないといけないとか???
こんなんで、何日もうんうん考え込んでます。
ベテランの方には、あまりに馬鹿馬鹿しい問題
なのかもしれませんが・・・

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ご推測の通り、Cookieを書き込んでから同じプロセスでそのCookieを読み込むことはできません。


CookieはCGIが呼び出されたときに環境変数の一つとして読み込まれます。ですからサンプルでは、書き込む以前にすでにCookieが読み込まれています。

ブラウザのCookieが有効になっているか否かは、別のCGIかJavaScriptであらかじめ書き込んでおく必要があります。

この回答への補足

ありがとうございました。
アドバイスいただけたので、自作CGIでよくよく
確認したところ、まさしくおっしゃるとおりでした。
これでようやく納得しました。。。

補足日時:2002/03/04 15:43
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qホワイトデイのおすすめクッキーは?

ヴァレンタインデイのお返しに
クッキーでもと考えてますが、クッキーといっても
種種雑多あるなかで、
 「おいしくて」「銘柄の通っているもの」
を教えて下さい。予算は1000円以上の物で。
それとホワイトデイというのは いつでしたっけ?

Aベストアンサー

ホワイトデーは3月14日です。バレンタインの一ヶ月後です。

オススメの焼き菓子ですが個人的に

クイーンアリス

http://www.pq-alice.com/shop/index.php?category_code=2

資生堂パーラー

http://www.shiseido.co.jp/parlour_shop/cont/cookies/index.htm

喜八

http://www.e-kihachi.jp/user/4153895/t14

などのお菓子が美味しくて好きです。銘柄も通っていると思います。

ご参考まで。

Q$wfurikae = 1 if ( &ccom::getShukujitsu( &com::tD( $wwy,$wwm,$wwd )) ne '' );がよく

$wfurikae = 1 if ( &ccom::getShukujitsu( &com::tD( $wwy,$wwm,$wwd )) ne '' );

というスクリプトがあったのですが、

$wfurikae = 1 の後に;もいれずifがきています。

違和感があります。

どのような意味になるのでしょうか。

宜しくお願い致します。

Aベストアンサー

そのまんまだと思いますよ。
if 以下の条件が真の時 $wfurikae = 1となります。
Perlはいろいろな書き方ができますので、こういう書き方もありです。
英語の文法の並びにする書き方です。

Q携帯で、Cookie(クッキー)って、設定できますか?できるとしたら、設定方法も教えて下さい!!

携帯で、Cookie(クッキー)って、設定できますか?Cookieがないと、2ちゃんねるとかに書き込むことができないみたいなんです。できるとしたら、設定方法も教えて下さい!!

Aベストアンサー

>携帯で、Cookie(クッキー)って、設定できますか?
→手動で設定とかは出来ないと思いますけど…^^;←Cookie

docomoの場合
iモードブラウザ2.0対応機はCookie対応してますが、1.0の場合、Cookie非対応
なので、iモードブラウザ1.0の機種では、どうあがいてもCookieは使用出来ません。
 参考:http://www.nttdocomo.co.jp/service/imode/make/content/browser/browser2/new_function/index.html#p06
対応かどうかは、「対応機種一覧」を参照して下さい。
簡単な見分け方として、
 ・?-99Bの大半はiモードブラウザ2.0(Lだけ1.0)
 ・それ以外はiモードブラウザ1.0(昨年冬モデルの一部は2.0)

auはWシリーズはcookie対応機と思います。
 参考:http://www.au.kddi.com/ezfactory/tec/spec/cookie.html

Softbankは3Gの大半は対応と思います。

フルブラウザやPCサイトブラウザであればON・OFF設定が有る様なので、
其れはお持ちの機種の取扱説明書を参照下さい。

でも、通常、携帯から2に書き込みする時は専用アプリを使用するのが普通
と思いますけどね。
(そのほかの掲示板は判りませんけど)

>携帯で、Cookie(クッキー)って、設定できますか?
→手動で設定とかは出来ないと思いますけど…^^;←Cookie

docomoの場合
iモードブラウザ2.0対応機はCookie対応してますが、1.0の場合、Cookie非対応
なので、iモードブラウザ1.0の機種では、どうあがいてもCookieは使用出来ません。
 参考:http://www.nttdocomo.co.jp/service/imode/make/content/browser/browser2/new_function/index.html#p06
対応かどうかは、「対応機種一覧」を参照して下さい。
簡単な見分け方として、
 ・?-99Bの大半はiモー...続きを読む

Q$ENV{'HTTP_COOKIE'}は例えば

a=x;b=y;c=z;
のようなフォーマットになっているのでしょうか?
そうすると
自分のサイトが使っているクッキー名と
他のサイトが使っているクッキー名が偶然に一致していたとき
あるブラウザに書かれている自分のサイトのクッキーが
そのブラウザが他のサイトをアクセスしたときに上書きされてしまうのでしょうか?
そのためにクッキー名をつけるときには偶然に一致しないように一定の長さ以上で特異な名前にしたほうがいいのでしょうか?
クッキーについて基本的なことを教えてください

Aベストアンサー

Cookieは、ドメインごとに設定され、パスで出力先が限定されます。パス指定されない場合、ドメインのルートパスとなります。

おっしゃる通り、同一ドメイン内で設定されたCookieが、全てHTTP_COOKIEで取得出来ます。(無論ドメインが違うと駄目。)もしも、Cookieにパス指定がある場合は、そのパス以下では該当のCookieが取得可能、それ以上の階層では取得不可能になります。(デフォルトだとルートパスなので、ドメイン内のどの階層でも取得可能です。)

このような仕様の為、同一ドメイン・パス指定以下の階層で利用されるものでは、偶然一致してしまうと、他のクッキーを上書きしてしまう可能性はあります。他と重複しない用に、プログラム名等を含ませる形で名付けてあげると良いでしょう。また、共用サーバなどでは、パス指定で自分のホームを指定しておき、他の方のクッキーと混同されないようにする、等の配慮が必要になります。

QCookie(クッキー)について

ポイントサイトに「Cookie(クッキー)が無効であれば正常にサービスが利用できませんので、ご注意ください。 」などと書かれています。

サイトの通りに自分のクッキーを確認しましたが
「自動Cookie処理を上書きする」にチェックされていないにも関わらず、サイトにログインするとポイントがきちんと表示されます。

これはクッキーが正常と判断してもいいのでしょうか?
宜しくお願い致します。

Aベストアンサー

通常のCookieの設定は、プライバシータブの設定が「中高」になっていれば正常と判断してもよろしいのでは。
そのサイトのURLCookieを見て、@マーク以降でサイト名が表示されていれば、Cookieでのやり取りがされている、と解釈して良いと思います。
プライバシータブにある「詳細設定」自動Cookie処理を上書きする、は個人のプライバシーに関する設定です。処理にある「ファーストパーティ」は、アクセスしているホームページ先、「サードパーティ」はバナー広告などの事で、アクセスした人の履歴を記録している機能と思って下さい。
例えば、銀行とネットで振り込み処理の作業を行う場合、この設定を有効にしないと、情報が漏れる可能性が出てきます。

Q@color1 = ('0000ae',・・・,'$user_color')で・・

とまとです。

行き詰まりました(TェT)

標題の代入で、'$user_color'の部分を文字列ではなく、後から出て来るinputで入力した文字を代入させるにはどうしたらいいのでしょう?
※標題のままだと「$user_color」という"文字列"が代入されてしまいます。

Aベストアンサー

変数の内容を展開したければ、
' でくくらなければいいわけですが、
後から出てくるなら、その代入時点では
undefine 状態ですか?

Qクッキー(Cookie)とは何でしょうか?

クッキー(Cookie)とは何でしょうか?
クッキー(Cookie)というものが何なのか分かりません。
ネットで調べると、「Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させるしくみ。」とか難しいことが書いてありますが、
要するにごく簡単に、具体的に言うと何なのでしょうか。
サルでもわかるようなやさしいご説明をお願い致します。

Aベストアンサー

IDとパスワードの情報をあなたのパソコン内に保存しておいて、
再度同じサイトにアクセスした際に、クッキー情報からIDをパスワードを引っ張ってきて
パソコンが勝手に入力状態にすることです。
それによって、毎回ID等を入力する手間を省きます。

QPrel正規表現で'$1$'.$saltのあたりが理解できない。

小生Perlを勉強中です。
Perl Codeに以下のようなパスワード暗号処理のサブルーチンが
ありましたが、読めません。教えて下さい。

sub encrypt{
local($inpw)=$_[0];
local(@SALT,$salt,$encrypt);

@SALT=('a'..'z','A'..'Z','0'..'9','.','\');
srand;
$salt=$SALT[int(rand(@SALT)).$SALT[int(rand(@SALT))];
$encrypt=crypt($inpw,$salt)||crypt($inpw,'$1$'.$salt);
return $encrypt;
}

とあります。
特に、下から3行目の($inpw,'$1$'.$salt)が
理解できません。
解説していただければ幸いです。

Aベストアンサー

過去に同様の質問がありました。ctpsysさんの疑問にすべて答えられるかどうかわかりませんが、すくなくとも
>下から3行目の($inpw,'$1$'.$salt)が理解できません
というご質問に対しては参考になるかと思います。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=74593,http://oshiete1.goo.ne.jp/kotaeru.php3?q=74593,

QCookie(クッキー)有効にするには?

タイトル通りCookie(クッキー)を有効にするには
どこを設定すればいいんでしょうか?

Aベストアンサー

ツール→インターネットオプション→プライバシーのタブを開くと左にスライダーがありますが、これとは違うのですか?

私の思い違いかも知れませんが…

Q$ENV{'HTTP_COOKIE'}について

windowsサーバーのcgi(※)にて「$ENV{'HTTP_COOKIE'}」でcookieの値が正常に取得できてましたが、
linuxサーバーにそのソースをそのまま移行し、動作確認したところ「$ENV{'HTTP_COOKIE'}」でcookieの値が取得できなくなってしましました。
(※)・・・ショッピングカートの処理

ちなみにSSLを使用しているページです。
(1)画面A(http)から「カート入れる」ボタンをクリックし、画面B(https)に遷移
(2)画面Bに遷移した際にcookieに取得、保存

要するにhttpsでセットしたものをhttpsゲットしようとしています。

サーバーの環境は以下となります
■windowsサーバー
・OS : Windows 2003 R2 SP2
・Perl ver : 5.8.7

■linuxサーバー
・OS : Red Hat Enterprise Linux 4
・Perl ver : 5.8.8
・パーミッション : 757

ロジックは変更していないのでおそらくサーバーのどこかの設定を変更しなければならないのではないかと思われますが、どこに手を付けてよいのかがわかりませんので
ご教授していただきたいです。

宜しくお願い致します。

windowsサーバーのcgi(※)にて「$ENV{'HTTP_COOKIE'}」でcookieの値が正常に取得できてましたが、
linuxサーバーにそのソースをそのまま移行し、動作確認したところ「$ENV{'HTTP_COOKIE'}」でcookieの値が取得できなくなってしましました。
(※)・・・ショッピングカートの処理

ちなみにSSLを使用しているページです。
(1)画面A(http)から「カート入れる」ボタンをクリックし、画面B(https)に遷移
(2)画面Bに遷移した際にcookieに取得、保存

要するにhttpsでセットしたものをhttps...続きを読む

Aベストアンサー

サーバー、Webサイトは並行稼動しているのでしょうか。

cookie をセットするときに、ドメインを指定しているが、
移行先のサーバーにアクセスする際のURLのドメインと
異なる、なんてことはないでしょうか。。。


人気Q&Aランキング

おすすめ情報