PHP 와 Mysql 을 사용하여 Counter 나 Referral 로그를 만드는 방법임니다..
본문을 설명하기에 앞서..
Referral 이 뭔지 물으시는 분들이 많기에..
우선 만들기를 위해서는 두 단계가 필요합니다.
PHP 코드를 만드는 단계와
MySql 에 테이블을 셋업 하는 단계로 나누어 집니다.
리퍼러 기록을 만드는 법부터 살펴 보겠습니다.
Counter 도 비슷한 방법으로 사용이 가능합니다.
부록..
반나절 삽질한 결과물 입니다...
본문을 설명하기에 앞서..
Referral 이 뭔지 물으시는 분들이 많기에..
Referral 이란
위키피디아에서 HTTP referer 을 찾으면 한줄로 찾을 수 있다.
When visiting a webpage, the referer or referring page is the URL of the previous webpage from which a link was followed.
즉, 웹페이지를 방문할때, 목적지 페이지를 어떤 페이지의 링크를 통해 들어갔다면 그 어떤 페이지의 URL 이 HTTP referer 또는 referring page 가 된다. 가령 http://blog.5hoon.com 을 접속할때 http://5hoon.com 에 있는 링크를 클릭해서 블로그로 들어왔다면 Referring page 는 http://5hoon.com 이 된다.
파폭을 사용한다면 마우스 오른쪽 클릭 -> 페이지 정보 로 Referring URL 을 볼수 있다.
이는 내 페이지가 어디에서 접속자가 많은지 파악할수 있는 중요한 자료이다.
When visiting a webpage, the referer or referring page is the URL of the previous webpage from which a link was followed.
즉, 웹페이지를 방문할때, 목적지 페이지를 어떤 페이지의 링크를 통해 들어갔다면 그 어떤 페이지의 URL 이 HTTP referer 또는 referring page 가 된다. 가령 http://blog.5hoon.com 을 접속할때 http://5hoon.com 에 있는 링크를 클릭해서 블로그로 들어왔다면 Referring page 는 http://5hoon.com 이 된다.
파폭을 사용한다면 마우스 오른쪽 클릭 -> 페이지 정보 로 Referring URL 을 볼수 있다.
이는 내 페이지가 어디에서 접속자가 많은지 파악할수 있는 중요한 자료이다.
우선 만들기를 위해서는 두 단계가 필요합니다.
PHP 코드를 만드는 단계와
MySql 에 테이블을 셋업 하는 단계로 나누어 집니다.
리퍼러 기록을 만드는 법부터 살펴 보겠습니다.
리퍼러 보기
1. PHP 코드 만들기.
가장 중요한 부분은 DB 에 접속하는 것입니다.
원하는 부분만 사용하시면 됩니다.
테이블 에는 원하는 테이블 이름을 넣어 주셔야 합니다.
이때 리퍼러가 없거나 특정 리퍼러는 기록을 하고 싶지 않다면..
그리고 마지막으로 DB 접속 해제..
2. MySql 테이블 셋업.
SQL 퀴리만 실행 시킬면 간단히 됩니다.
phpMyAdmin 을 사용할 경우 DB name 을 클릭후 SQL 을 클릭하면 됩니다.
Run SQL query/queries on database ______ 이라고 뜨고 텍스트박스가 하나 뜨게 됩니다.
마찬가지로 테이블 에는 원하는 테이블 이름을 넣어 주셔야 합니다.
리퍼러를 설정한 페이지를 접속후 DB 를 Browse 해보면 Entry 가 생긴것을 볼수 있습니다.
가장 중요한 부분은 DB 에 접속하는 것입니다.
<?php
mysql_connect("DB 주소","DB ID","DB pw");
mysql_select_db("DB 이름");
?>
원하는 부분만 사용하시면 됩니다.
테이블 에는 원하는 테이블 이름을 넣어 주셔야 합니다.
<?php이렇게 코드를 만드시면 됩니다.
$tm = $_SERVER['REQUEST_TIME']; //시간을 기록
$ip = $_SERVER['REMOTE_ADDR']; //사용자 ip 기록
$page = $_SERVER['PHP_SELF']; //접속한 페이지를 기록
$ref = $_SERVER['HTTP_REFERER']; //리퍼러 기록
$agent = $_SERVER['HTTP_USER_AGENT']; //사용자의 브라우저 기록
$viewer_new_query = "INSERT INTO 테이블 (tm, ip, page, ref, agent) VALUES ('$tm', '$ip', '$page', '$ref', '$agent')";
$viewer_new_result = mysql_query($viewer_new_query);
?>
이때 리퍼러가 없거나 특정 리퍼러는 기록을 하고 싶지 않다면..
<?php이렇게 하면 원하는 리퍼러만 DB에 기록할수 있습니다.
$tm = $_SERVER['REQUEST_TIME']; //시간을 기록
$ip = $_SERVER['REMOTE_ADDR']; //사용자 ip 기록
$page = $_SERVER['PHP_SELF']; //접속한 페이지를 기록
$ref = $_SERVER['HTTP_REFERER']; //리퍼러 기록
$agent = $_SERVER['HTTP_USER_AGENT']; //사용자의 브라우저 기록
$findme = 'blog.5hoon.com'; //있으면 무시할 주소
$pos = strpos($ref, $findme); //리퍼러에 있는지 확인
if ($pos === false && $ref != "") { //리퍼러에 주소가 없가나 공란이 아니면
$viewer_new_query = "INSERT INTO 테이블 (tm, ip, page, ref, agent) VALUES ('$tm', '$ip', '$page', '$ref', '$agent')";
$viewer_new_result = mysql_query($viewer_new_query);
}
?>
그리고 마지막으로 DB 접속 해제..
<?php
mysql_close();
?>
2. MySql 테이블 셋업.
SQL 퀴리만 실행 시킬면 간단히 됩니다.
phpMyAdmin 을 사용할 경우 DB name 을 클릭후 SQL 을 클릭하면 됩니다.
Run SQL query/queries on database ______ 이라고 뜨고 텍스트박스가 하나 뜨게 됩니다.
마찬가지로 테이블 에는 원하는 테이블 이름을 넣어 주셔야 합니다.
CREATE TABLE `테이블` (이러면 끝 입니다 -0-;
`id` int(11) NOT NULL auto_increment,
`tm` varchar(15) NOT NULL default '',
`ip` varchar(15) NOT NULL default '',
`page` varchar(100) NOT NULL default '',
`ref` varchar(250) NOT NULL default '',
`agent` varchar(250) NOT NULL default '',
PRIMARY KEY (`id`)
)
리퍼러를 설정한 페이지를 접속후 DB 를 Browse 해보면 Entry 가 생긴것을 볼수 있습니다.
Counter 도 비슷한 방법으로 사용이 가능합니다.
카운터 보기
1. PHP 코드 만들기.
가장 중요한 부분은 DB 에 접속하는 것입니다.
원하는 부분만 사용하시면 됩니다.
테이블 이름은 counter 로 되어있으나 필요에 따라 바꾸시면 됩니다.
그리고 마지막으로 DB 접속 해제..
2. MySql 테이블 셋업.
SQL 퀴리만 실행 시킬면 간단히 됩니다.
phpMyAdmin 을 사용할 경우 DB name 을 클릭후 SQL 을 클릭하면 됩니다.
Run SQL query/queries on database ______ 이라고 뜨고 텍스트박스가 하나 뜨게 됩니다.
마찬가지로 테이블 에는 원하는 테이블 이름을 넣어 주셔야 합니다.
카운터를를 설정한 페이지를 접속후 DB 를 Browse 해보면 Entry 가 생긴것을 볼수 있습니다.
가장 중요한 부분은 DB 에 접속하는 것입니다.
<?php
mysql_connect("DB 주소","DB ID","DB pw");
mysql_select_db("DB 이름");
?>
원하는 부분만 사용하시면 됩니다.
테이블 이름은 counter 로 되어있으나 필요에 따라 바꾸시면 됩니다.
<?php이렇게 코드를 만드시면 됩니다.
$page = $_SERVER['PHP_SELF']; //페이지를 기록합니다.
//현재 페이지에 카운터가 있는지 확인
$viewer_check_query = "SELECT * FROM counter WHERE page = '$page'";
$viewer_check_result = mysql_query($viewer_check_query);
$viewer_check_numrows = mysql_num_rows($viewer_check_result);
//페이지가 없다면 새로운 entry 를 만듭니다.
if($viewer_check_numrows == 0){
mysql_query("INSERT INTO counter (page, count) VALUES('$page', '1')");
//페이지가 존재한다면 카운터를 증가합니다.
}else{
mysql_query("UPDATE counter SET count = count+1");
}
?>
그리고 마지막으로 DB 접속 해제..
<?php
mysql_close();
?>
2. MySql 테이블 셋업.
SQL 퀴리만 실행 시킬면 간단히 됩니다.
phpMyAdmin 을 사용할 경우 DB name 을 클릭후 SQL 을 클릭하면 됩니다.
Run SQL query/queries on database ______ 이라고 뜨고 텍스트박스가 하나 뜨게 됩니다.
마찬가지로 테이블 에는 원하는 테이블 이름을 넣어 주셔야 합니다.
CREATE TABLE `counter` (이러면 끝 입니다 -0-;
`id` int(11) NOT NULL auto_increment,
`count` int(10) NOT NULL default '1',
PRIMARY KEY (`id`),
)
카운터를를 설정한 페이지를 접속후 DB 를 Browse 해보면 Entry 가 생긴것을 볼수 있습니다.
부록..
저장한 데이타 보기
이렇게 DB 에 기록만 해놓고 빼서 볼수 없다면 아무런 소용이 없겠죠?
간단한 코드로 mysql 의 데이타를 다시 php 를 통해 브라우져에 뿌려 주는 방법입니다.
표를 만든다 하면..
간단한 코드로 mysql 의 데이타를 다시 php 를 통해 브라우져에 뿌려 주는 방법입니다.
표를 만든다 하면..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">를 하고 파일을 업로드 하면 됩니다.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>관리도구</title>
</head>
<body>
<table border="1px" cellpadding="0" cellspacing="0">
<!-- 테이블에 있는 항목들중 표기할 항목을 고릅니다. 리퍼러 기록이라 하면.. -->
<tr><td align="center">날 짜</td><td align="center">IP</td><td align="center">페이지</td><td align="center">리퍼러 주소</td></tr>
<?
<!-- DB 에 접속합니다 -->
mysql_connect("DB 주소","DB ID","DB pw");
mysql_select_db("DB 이름");
<!-- 최근 20개의 entry 를 뽑습니다 -->
$result=mysql_query("select * from 테이블 order by id desc limit 20");
while($data=mysql_fetch_array($result)){
echo "<tr><td>".date("m-d-y/G:i:s",$data[tm])."</td><td>.$data[ip].".</td><td>".
$data[ip]."</td><td>".$data[page]."</td><td>".$data[ref]."</td><td>".$data[agent]. </td></tr>;
}
echo "</table>";
mysql_close();
?>
</table>
</body>
</html>
반나절 삽질한 결과물 입니다...
2008/03/13 18:05
2008/03/13 18:05





댓글을 달아 주세요