Perl の 小箱

2007/12/ 2

その3.Cookie の送受信

 会員用のページを作っていて、Cookieで認証済みか否かをチェックするようにしたいと思った。例えば、一旦 正しいIDとPWでログインしてから30分間以内でアクセスし続ければログインが継続できるが、それ以上アクセスが無い場合は、再度 ログインを要求するなどの使い方をしたい場合がある。このときの Cookie 送受信のサンプルコードが下記のようになる。
#!/usr/bin/perl

$now_cookie = $ENV{"HTTP_COOKIE"};
$new_cookie = $now_cookie + 1;

$expires = &makeexpiresdate(30);

print "Content-type: text/html\n";
print "Set-Cookie: $new_cookie; expires=$expires;\n";
print "\n";
if($now_cookie eq "") { print "Cookie is NOT found!
\n"; } else {print "Receive Cookie is : $now_cookie
\n";} print "New Send Cookie is : $new_cookie
\n"; print "(リロードしてください)
\n"; sub makeexpiresdate { local $delta; local ($gmt, @t, @m, @w); $delta = @_[0]; @t = gmtime(time() + $delta); @m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); @w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]); return $gmt; }
上記サンプルを試すのは こちら
テスト用には、期限が分かりやすいように現在時刻に対して 30秒後に cookieが Expireするようにしてあるので、かなり 短い時間で Browserの 「再表示」ボタンを押し続けないと、カウンターがリセットする。


<<<    Index   >>>掲示板スパム撃退方法

NAME.gif 総アクセス数