Myu's Lab.   Cookieの受け取り方について説明します。

第六章:クッキーのおいしい食べ方


この章では、発行したクッキーを読みとる方法について説明します。(一部、第五章と 内容が重複します)クッキーの取得は少しやっかいです。pathを設定できればそれに越 したことはないのですが、できないサーバーで使用することを前提にして、ここでは説 明をしていきます。クッキーはその該当するパスにあわせた値が環境変数HTTP_COOKIE に格納されます。ただし、pathを指定してクッキーを発行していないためにDomainで指 定されたサーバーのどこでもクッキーが受け取れることになります。逆に言うと、どこ にいても関係ないクッキーまで一緒にHTTP_COOKIEに格納されるということになり、自 分で必要な値を使うためにクッキー名で判別をしなければなりません。ここで、状況に よってのHTTP_COOKIEの値の変化を示してみましょう。

  1. HTTP_COOKIEが読みとれない場合・・・NULL
  2. 該当するパスにクッキーが発行されていない場合・・・\0
  3. 一つのみ発行されている場合・・・Cookie1=Value
  4. 複数発行されている場合・・・Cookie1=Value; Cookie2=value; Cookie3=value

それぞれの状況に合わせて環境変数に値が代入されます。この状況変化に対応するよう に値を分割していけばいいのですが、注意しなければいけない点は、クッキーとクッキ ーの区切りに';'(セミコロン)と、' '(半角スペース) が含まれている点です。以上の点に注意して値を分割し、必要なクッキーの 値を取得しなければなりません。

3,4をそれぞれ区別せずに汎用的に分割するのであれば、4の場合に帰ってくるクッキー の最後のレコードにセミコロン、半角スペースを加えてから分割をするとわかりやすい かもしれません。HTTP_COOKIEで返ってくる文字列をstrcookieとして、以下にクッキー 分割の順番を示します。

このような感じでしょうか。もちろん、1や2のような場合の対処も分割の前に行わなけ ればいけません。

私自身、クッキーの取得は一番手こずりました。どうしてもうまくいかない場合は遠慮 なく会議室にて質問してください。なお、クッキーの正式な仕様は下記のNetscapeサイ トをご参照ください。


Client Side State - HTTP Cookies (http://www.netscape.com/newsref/std/cookie_spec.html)


□講座案内へ


Copyright(C) 1996-2005 Yuto Ikeno All rights reserved.