본문 바로가기

DHTML/PHP

php카운터

테이블은 다음과 같이 간단한 구조가 되겠고


CREATE TABLE counter (
   ipaddr varchar(20),
   visit_time datetime
);


아래와 같은 스크립트로 카운팅을 검사/실행 합니다.

파란색 글자인 60은 60분을 의미 합니다.

해당 IP가 다시 접속했을 때 최소 60분이 지나야 카운팅이 실행되므로

그 값을 조절 함으로써 기능상 입맛에 맞는 카운터가 될듯합니다.

참고로 어제/오늘/종합 에 해당되는 변수는

$yday_row[0]/$today_row[0]/$total_row[0]

입니다.


<?

$today = date("Y-m-d");
$yday = mktime(0,0,0,date("m"),date("d")-1,date("Y"));
$yday = date("Y-m-d",$yday);
$time_set = 3600*24;
$connect = mysql_connect("호스트","사용자","비번") or die("DB Server에 접속할 수 없습니다.");
mysql_select_db("데이터베이스",$connect);

$query="SELECT count(*) FROM counter WHERE ((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(visit_time))/60)<60 AND ipaddr='$REMOTE_ADDR'";
$res = mysql_query($query,$connect);
$row = mysql_fetch_row($res);

if(!$row[0]) {
    $query = "INSERT INTO counter VALUES ('$REMOTE_ADDR',NOW())";
    mysql_query($query,$connect);
}

$total_query = "SELECT count(*) FROM counter";
$total_res = mysql_query($total_query,$connect);
$total_row = mysql_fetch_row($total_res);

$today_query = "SELECT count(*) FROM counter WHERE DATE_FORMAT(visit_time,'%Y-%m-%d')='$today'";
$today_res = mysql_query($today_query,$connect);
$today_row = mysql_fetch_row($today_res);

$yday_query = "SELECT count(*) FROM counter WHERE DATE_FORMAT(visit_time,'%Y-%m-%d')='$yday'";
$yday_res = mysql_query($yday_query,$connect);
$yday_row = mysql_fetch_row($yday_res);

?>