Perlコーディング

クッキー発行、クッキー読込

2007年11月21日
クッキーを発行して、認証に使います。

1.ログインが完了でクッキー発行
2.それ以降のページではクッキーを読み込んで、セットされていれば表示、されていなければ表示しない

とします。


まず、クッキー発行。
Cookieの属性は
・名前
 必須。クッキーの名前と値を設定します。
・ドメイン
 クッキーを発行するドメインを指定します。
・パス
 Cookie情報の取得を許可するURLパス情報を指定します。
・有効期限
 クッキーの有効期限を指定します。書式は、Fri, 21-Nov-2007 23:59:59 GMT
 指定しなければ、ブラウザが閉じられるまでが期限になります。
・セキュア接続フラグ
 フラグを立てると、サーバーとの接続がセキュアであるときのみ、クッキーが有効になります。
があります。

構文は
Set-Cookie : 名前=値; expires=日付;path=パス; domain=ドメイン名; secure
です。日本語や【"】、【'】、【;】が含まれる場合はエンコードします。
変数$cookieをエンコードするときは
$cookie =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
です。


今回は簡単な認証に使うだけなので、名前のみ指定します。ブラウザを閉じたらセッションを閉じたいので、有効期限も無指定です。

クッキー名:cookie_name
値:cookie_value
をセットします。
Set-Cookie : cookie_name=cookie_value;\n\n

これをヘッダにprint文で書き込みます。\n\nと\nを2つ続けて出力します。Set-Cookieの後ろは空行が必要なようです。

print <<EOT;
Content-type: text/html
print "Set-Cookie : cookie_name=cookie_value;\n\n";
空行
html本体


次は、クッキー取得。
発行したクッキーは$ENV{'HTTP_COOKIE'}で参照できます。各属性は【;】で、名前と値は【=】で区切ることができます。発行時はエンコードしたので、取得時はデコードします。

クッキー取得サブ関数です。$cookie{'クッキー名'}で値が参照できます。
sub getCookie {
 $cookie_name = shift @_;
 foreach (split(/;/, $ENV{'HTTP_COOKIE'})) {
  ($name, $value) = split(/=/);
  $name =~ s/\s//g;
  $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
  $cookie{$name} = $value;
  return $cookie{$cookie_name};
 }
}

今回セットしたCookieの場合、$cookie{'cookie_name'}にcookie_valueが入っています。


参考になるサイト
Perl講座 -Smart
簡単CGI クッキーを使おう
コメントの書き込み
コメント
2018年01月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード