테이블은 다음과 같이 간단한 구조가 되겠고
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);
?>