#!/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);
}