#!/usr/local/bin/perl # 1998.03.01 リニューアル初版 # 1998.11.08 IE4.0で正常に設定できない問題に対処 # # Cookieの値を得る # &getCookie(); $time = $COOKIE{'KAISUU'}; if ($time eq "") { $time = 1; } $date = $COOKIE{'HIZUKE'}; if ($date eq "") { $date = "???"; } # # 書き込むCookieの値を得る # $time_new = $time + 1; ($sec, $min, $hour, $mday, $mon, $year) = localtime(); $date_new = sprintf("%04d/%02d/%02d %02d:%02d:%02d", $year + 1900, $mon + 1, $mday, $hour, $min, $sec); # # ページを表示する。 # print &setCookie("KAISUU", $time_new); print &setCookie("HIZUKE", $date_new); print "Content-type: text/html\n"; print "\n"; print "\n"; print "\n"; print "Cookie Test\n"; print "\n"; print "\n"; print "
\n"; print "

読み込んだCookieの値(整形前)

\n"; print "HTTP_COOKIE = $ENV{'HTTP_COOKIE'}\n"; print "
\n"; print "

読み込んだCookieの値(整形後)

\n"; print "これまでの訪問回数:$time
\n"; print "前回の訪問日:$date
\n"; print "
\n"; print "

書き込んだCookieの値

\n"; print &setCookie("KAISUU", $time_new); print "
\n"; print &setCookie("HIZUKE", $date_new); print "
\n"; print "リロードしてみてください。\n"; print "一度ブラウザを終了させても、値が保存されています。\n"; print "\n"; print "\n"; # # Cookieの値を読み出す # sub getCookie { local($xx, $name, $value); for $xx (split(/; */, $ENV{'HTTP_COOKIE'})) { ($name, $value) = split(/=/, $xx); $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg; $COOKIE{$name} = $value; } } # # Cookieに値を書き込むためのSet-Cookie:ヘッダを生成する # sub setCookie { local($tmp, $val); $val = $_[1]; $val =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $tmp = "Set-Cookie: "; $tmp .= "$_[0]=$val; "; $tmp .= "expires=Thu, 1-Jan-2030 00:00:00 GMT;\n"; return($tmp); } # # Cookieを削除するためのSet-Cookie:ヘッダを生成する # sub clearCookie { $tmp = "Set-Cookie: "; $tmp .= "$_[0]=xx; "; $tmp .= " expires=Thu, 1-Jan-1980 00:00:00 GMT;\n"; return($tmp); }