[トップページ]
訪問回数をカウントする - Perl
#! /usr/local/bin/perl

@YOBI = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
@MONTH = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

# Cookieデータ取得
	&get_cookie();
	
	$count = $COOKIE{'counter'};
	if ($count eq "")
		{$count = 0;}
	$count++;

# Cookieデータセット/HTML出力
	print &set_cookie("counter", $count);
	print "Content-type: text/html\n\n";
	print "<HTML>\n";
	print "<HEAD>\n";
	print "<TITLE>Cookie Test</TITLE>\n";
	print "</HEAD>\n";
	print "<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"000000\">\n";
	print "$count 回目の訪問です。ありがとうございます。<BR>\n";
	print "</BODY>\n";
	print "</HTML>\n";

	exit;

#-------------------------------------------------------------
sub get_cookie {
	local($str);
	local($name);
	local($value);

# 環境変数HTTP_COOKIEよりCookieデータを取得
    for $str (split(/; */, $ENV{'HTTP_COOKIE'})) {
        ($name, $value) = split(/=/, $str);
	# データのデコード
        $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
        $COOKIE{$name} = $value;
    }
}
#-------------------------------------------------------------
sub set_cookie {
    local($value);
    local($cookie_data);

# データのエンコード
    $value = $_[1];
    $value =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;

# cookie有効日付作成(ここでは、30日とします)
    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time+30*24*60*60);

# Cookieデータのセット
    $cookie_data = sprintf("Set-Cookie: %s=%s; expires=%s, %02d-%s-%d 23:59:59 GMT; \n"
                      , $_[0], $value, $YOBI[$wday], $mday, $MONTH[$mon], $year+1900);

    return ($cookie_data);
}

[トップページ]
Copyright (C) 2000 Me All rights reserved
Mail To webmaster