perl や PHP で Cookie(クッキー)を読み書きする方法
Cookie の出力
Cookie は HTTPヘッダに出力することで、アクセスしたユーザーのブラウザ毎に書き込むことができます。
Cookie を書き込む際の書式は、
name=value; expires=Sun, 15-Nov-2009 23:59:59 GMT; domain=www.abe-tatsuya.com; path=/cgi-bin/; secure
という感じです。
- name
- 必須。任意の「name」に対する値「value」を指定します。
例) loginid=abetatsuya - expires
- Cookie の有効期限を指定します。省略するとブラウザを閉じるまでの間が有効期限になります。
また、過去の時刻を指定すると、該当 Cookie を削除します。 - domain
- Cookie を有効にするドメイン名を指定します。省略可。
- path
- Cookie を有効にするパスを指定します。省略すると、Cookie を書き込んだファイルのあるパスとなります。
- secure
- 指定すると、SSL での通信時のみ Cookie をやり取りします。
この情報を、Set-Cookieヘッダとして出力すれば良いので、 perl の CGI の場合には、
print qq|Set-Cookie: loginid=abetatsuya; |; print qq|expires=Sun, 15-Nov-2009 23:59:59 GMT; |; print qq|domain=www.abe-tatsuya.com; path=/cgi-bin/; secure\n|; print qq|Content-type: text/html; chearset=UTF-8\n|; print qq|\n|; #-- 以下、ページを出力
という感じにすれば良いわけです。
PHP の場合は、その名の通り setcookie っていう関数が用意されてるので、非常に楽チンですね。
setcookie("loginid","abetatsuya",time,"/cgi-bin",
"www.abe-tatsuya.com",true);
こんな感じで書けばOKです。
詳細はPHP: setcookie - Manual等を参照。
複数の Cookie を書き込みたい場合は、複数回 Set-Cookie ヘッダを出力すれば大丈夫です。
Cookie の読み込み
書き込んだ Cookie を読み込みたい場合は、環境変数 HTTP_COOKIE を参照します。
perl であれば $ENV{'HTTP_COOKIE'} 内に「name=value」という形式で入っています。
複数の値が指定されている場合は「; 」区切りで「name1=value1; name2=value2」のように入ります。
「; 」で split した後にさらに「=」で split して、$COOKIE{'name'} = value のような連想配列に入れると使い易いかと思います。
PHP の場合は、$_COOKIE['name'] という変数内に、そのまま指定した値が入ってきます。
- 関連するブログ記事
-
- 現在位置
- TOP > Web制作技術 > perl/CGI > perl や PHP で Cookie(クッキー)を読み書きする方法
- 前のブログ記事
- MT4 で TagSupplementals プラグインを利用して関連ブログ記事(エントリー)一覧を表示する方法 [2009年11月14日 23:59]
- 次のブログ記事
- MT4 でカテゴリやフォルダを好きな順番に並べ替えられる Sort Categories And Folders プラグイン [2009年11月16日 21:44]







コメント(0)
コメントする