묻고답하기

플래시 카운터..
아마 인터넷 웹서핑을 많이 해보신분들은 아실겁니다.
예제는.. 여기로 들어가면 있구요..

예제보기

이 플래시 카운터가.. 총 4개의 파일로 이루어져 있습니다.

count.cgi
count.txt
count.swf
count.html

이렇게 이루어져 있는데.. 이중 txt파일은 카운터에 저장되는 조회수가 기록됩니다.
그리고 swf파일은 아시다시피 플래시 파일이구요. 그리고 html파일은 cgi파일을 불러오는
역할을 하는것 같은데.. 확실히는 모르겠습니다. 우선 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 = <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-$dayn";

$mon2++;
$year2 += 1900;
$yesterday = "$year2-$mon2-$day2n";

#####연월일 비교
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,$lastdayn";

&unlock_close(CNT);

#####HTTP헤더
print "Content-type: text/plainn";
&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/plainnn";
                print "$name파일을 열 수 없습니다.n";
                exit(0);
                }
        if ($uselock) {
                eval("flock(FILE, 2)");
                if ($@) {
                        print "content-type: text/plainnn";
                        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 '';

}

###################################################################################################

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

이렇게 이루어져 있습니다.
제가 이런 것을 볼줄을 몰라서 그러는데..
혹시 카운터의 중복을 없애는 방법이 없을까요?
어떻게 수정하면 카운터의 중복으로 올라가는 조회수를 않나타나게 할수있나요...

위 예제를 보다가.. 몇초후에.. 새로고침(F5)를 누르면 전체 조회수를 비롯해서..
You란의 숫자가 올라가는 것을 알수 있습니다. 이런것을.. 하루 한번씩만 올라가게 하는법을..
아시는분 계시나요... 아시면 답변좀.. 부탁드리겠습니다.
글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
기다림 XP 에서 텔넷이랑 ftp 하는 방법좀. [2] 2007.08.10
공유기시로! 아파치 서버에서 계정을 줄때 [4] 2007.08.10
정영훈 플래시 카운터에 대한 질문입니다. [1] 2007.08.10
신성규 제로보드의 아이콘... [2] 2007.08.10
라비 플래쉬MX에서 html 아이프레임처럼, php 인클루드처럼, [1] 2007.08.10
박선영 어디다 써야 할지... 컴퓨터에 오류가 있어서요. 고수분들! 알려주세요  
정윤진 sql에서 사용자랑 사용자 패스워드랑 어케 주나여...? [1] 2007.08.10
용신 [초보질문]포토샵7.0 에서 레이어 병합하는것좀........... [3] 2007.08.10
PΙΝΦΚΨΦ™ 멀티부팅으로 APM 같은 설정 사용하려면  
치토스 랜덤 이미지에 스크립트 걸기에서 질문드립니다;; [1] 2007.08.10
세죠위그이 레벨별로 다른 메시지 보내기 [1] 2007.08.10
남동혁 phpmyadmin설치하고 접속이 안되여.. 도와주세여. [8] 2007.08.10
연(延) 리눅스로 서버를 만든다면은... [6] 2007.08.10
아린~★ 제로보드를 크롬리스로 띄우면...  
김준호 윈도우 xp 에서 네임서버 돌리는 법좀 알고 싶습니다. [4] 2007.08.10
yukke 새로고침을 해야 보입니다.  
jinsu 꼭 답변 해주세요 -_ㅠ [2] 2007.08.10
김민규 while구문에 대한 질문여... [1] 2007.08.10
유정욱 안녕하세요 버추얼호스팅에 관련된거예요 [1] 2007.08.10
HiKaRi 이미지를 새창으로 띄우고 싶어요. [1] 2007.08.10
윤태호 제로보드 관리자화면에서의 폰트가 전과는 다르게 나오는 문제점..  
이항복 플래시에서 선그리는 무비만드는 방법 좀 알려주세요. [1] 2007.08.10
만두 플래시 버튼 누르면.. 홈페이지를 시작 페이지로 설정할 수 있도록 하려면... [2] 2007.08.10
훈이 저기 ㅠ_ㅠ HTML로 된 표를 수정가능하도록..php로 ㅠ_ㅠ  
안용수 프레임셋에 대해서 질문드립니다. [1] 2007.08.10
정윤진 리눅스에inetd.conf가 없는데.. [1] 2007.08.10
안데르센 트레이스 라우터 였나?  
기다림 mysql 에서 테이블을 백업을 했는데..복구할때.. [2] 2007.08.10
바다~♡ 실시간으로 줄어드는 카운터 시계 구현에대한 질문 [3] 2007.08.10
이우봉 [질문] 인라인프레임에요.. [2] 2007.08.10