雨谷の日和

過去20年で2,700を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

人狼BBS作成日記62

ログイン機能を実装するには「ログインしているか・していないか」を区別する方法を考える必要があります。
Sessionが使えるのであれば、それが一番良いんだろうとは思うのですが、独自に実装するのは面倒なので今回はやめておきます。多分、世の中にはSessionを使えるようにしてくれるモジュールが存在しているのだろうとは思うのですが、今回はそれも使わない方向で。後で、また考えます。
ということで、今回はCookieを使って、ログインしているかどうかを区別することにしようと思います。


まずはCookieの取り扱いの方法を見ていきます。
CookieはWebサーバとブラウザの間で、HTMLや画像などのコンテンツとは別にやり取りされる文字列です。HTTPヘッダ部分に埋め込まれており、CGIはそれを環境変数という形で受け取ることが出来ます。変数名は「HTTP_COOKIE」です。

  $cookies = $ENV{'HTTP_COOKIE'};

上記のようにすれば、Cookieの文字列を変数に格納することが出来ます。ただ、このままでは意味のあるデータとしては使えませんから、Cookieの中身を切り分ける必要があります。
Cookieは、以下のような文法の文字列になっています。

[NAME]=[VALUE]; expires=[有効期限]; domain=[送信先サーバ]; path=[送信先Path]; secure

expires、domain、path、secure は、それぞれCookie文字列の有効範囲を限定する目的で用いられます。
ということでデータとして使える部分はNAMEとVALUEの部分ということになります。一つのCookie文字列につき、一対のNAMEとVALUEを指定できるというわけですので、幾つかの異なるデータを使いたい場合には複数の名前の異なるCookieを用いるか、VALUE部分に構造を持たせてそれを別途切り分けるかの二通りがあるかと思います。


今回は、NAMEは一つだけにして、VALUEに構造を持たせるような利用方法を採用してみようかと思います。
続きは次回で。