Flash Counter 프로그램 설치 (apmsetup.com)
로빈아빠
본문
Flash Counter 프로그램 설치 이제 가장 간단한 프로그램인 Flash Counter 프로그램을 설치해 볼까요 ? 다운로드는 /apmtip/cgi_source/flashcount.zip 에서 다운로드 받으실 수 있습니다. 자 그럼 다운로드 받은 파일의 압축을 해제 하시고. Apache 의 DocumentRoot 의 flashcount 디렉토리에 복사 합니다. APM_Setup 으로 예를 들면 C:\APM_Setup\htdocs\flashcount 디렉토리가 되겠죠 ? count.html , count.cgi , count.swf , count.txt 이렇게 4개의 파일이 있죠 ? 그럼 count.cgi 파일을 편집기로 열어 볼까요 ?
#!/usr/bin/perl
#
#설정___######################################################################
$cgi = "./count.cgi"; #CGI스크립트가 있는 주소
$file = "./count.txt"; #로그파일이 있는 주소
$cookiename = 'count'; #쿠키이름(변경가능)
$dday = 90; #쿠키의 기한일
$uselock = 0; #락 사용여부(0=no 1=yes)
#################################################################################
&lock_open(CNT, "+<$file");
$cnt = ;
($total_c,$yesterday_c,$today_c,$lastday) = split(/,/, $cnt);
$total_c++;
$today_c++;
$your_c = &get_cookie($cookiename) + 1;
#####오늘과 어제의 연월일 취득
$ENV{'TZ'} = 'JST-9';
( $sec, $min, $hour, $day, $mon, $year ) = localtime(time);
($sec2, $min2, $hour2, $day2, $mon2, $year2 ) = localtime(time-24*60*60);
$mon++;
$year += 1900;
$today = "$year-$mon-$day\n";
$mon2++;
$year2 += 1900;
$yesterday = "$year2-$mon2-$day2\n";
#####연월일 비교
if ($today ne $lastday) {
if ($yesterday ne $lastday) {
$yesterday_c = 0;
} else {
$yesterday_c = $today_c;
}
$today_c = 1;
$lastday = $today;
}
#####6자리수 변환
$total_c = sprintf("%06d", $total_c);
$today_c = sprintf("%06d", $today_c);
$yesterday_c = sprintf("%06d", $yesterday_c);
$your_c = sprintf("%06d", $your_c);
seek(CNT, 0, 0);
print CNT "$total_c,$yesterday_c,$today_c,$lastday\n";
&unlock_close(CNT);
#####HTTP헤더
print "Content-type: text/plain\n";
&set_cookie($cookiename);
print "\n";
print "cgi=$cgi&total=$total_c&yes=$yesterday_c&today=$today_c&you=$your_c&load=end&";
exit(0);
#####파일락 열기
sub lock_open {
local(*FILE, $name) = @_;
if (!open(FILE, $name)) {
print "content-type: text/plain\n\n";
print "$name파일을 열 수 없습니다.\n";
exit(0);
}
if ($uselock) {
eval("flock(FILE, 2)");
if ($@) {
print "content-type: text/plain\n\n";
print "$@이 환경에서는 flock 은 사용할 수 없습니다\$uselock = 0 으로 해주세요\n";
exit(0);
}
}
seek(FILE, 0, 0);
}
#####파일락 닫기
sub unlock_close {
local(*FILE) = @_;
if ($uselock) {
eval("flock(FILE, 8)");
}
close(FILE);
}
#####===쿠키처리===############################################################################
#####쿠키유효기간
sub get_cookie_date {
$ENV{'TZ'} = 'JST-9';
my( $csec, $cmin, $chour, $cday, $cmon, $cyear, $cwday )
= localtime(time + $dday*60*60*24);
my(@month) = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my(@week) = qw(Sun Mon Tue Wed Thu Fri Sat);
return sprintf("%s, %d-%s-%04d %02d:%02d:%02d GMT", $week[$cwday],$cday,$month[$cmon+1],$cyear+1900,$chour,$cmin,$csec);
}
#####쿠키의 출력
sub set_cookie {
local($cookiename2) = @_;
$cookiedate = &get_cookie_date;
print "Set-Cookie: $cookiename=$your_c; expires=$cookiedate; \n";
}
#####쿠키의 취득
sub get_cookie {
local($cookiename1) = @_;
@pairs = split(/; /, $ENV{'HTTP_COOKIE'});
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
if ($name eq $cookiename) {
return $value;
}
}
return '';
}
###################################################################################################
그럼 위의 소스를 보시면 맨 윗줄에
#!/usr/bin/perl
위의 내용이 있죠 ?
그럼 이 것을
#!C:/Perl/bin/perl.exe
이렇게 perl.exe 의 위치로 변경하시고 저장합니다.
자 그럼 저장하고 이 CGI 프로그램이 동작하나 테스트를 해보시려면.
http://localhost/flashcount/count.cgi
cgi=./count.cgi&total=000002&yes=000000&today=000002&you=000001&load=end&
이렇게 나온다면 정상작으로 동작 하는것이겠죠 ?
예에서 처럼 500 에러가 나온다면..
CGI 소스의 이상이 있나 확인해 보시기 바랍니다.
자 그럼..
count.html 파일을 열어 볼까요 ?
Flash count 프로그램의 예를 나타내는 HTML 소스 입니다.
flash-counter
관련링크
댓글목록
등록된 댓글이 없습니다.