접속자 보기

현재 접속중인 사용자를 편법이나마 알려주는 코드입니다 ^^

개인홈페이지나 사용자가 무지 많은곳만 아니라면 간단하게 사용하세요 ^^

by 오길호 (prince@kilho.net, http://k2lab.com)

——————————————————————
* 설치방법

1. config.php 값을 알아서 맞춥니다(각 디비에 맞춰서 ^^)
2. make_table.php 을 한번실행시켜서 테이블 생성하고 초기값을 넣어줍니다
3. 필요한 부분에 메인소스를 넣습니다.
(메인소스는 캡슐화 시켜서 한군데 넣어놓고 필요시 뿌리면 될껍니다 ^^)

* 동작원리

1. 페이지를 옮길때마다 사용자의 접속시간을 체크합니다.
2. 불특정 사용자가 일정시간이후 접속시 쓰레기값(?)들을 지웁니다.
3. DB에 저장된값들 출력~

* 회원제라면 NICKNAME 에 ID값이나 닉네임값을 넣어주고 약간 변경하면 회원들의
접속상태만 알아낼수 있을껍니다 ^^

—— config.php 소스 ——————————————–
$khost = ‘localhost’; //host
$kuser = ‘xxxxx’; //user
$kpassword=’xxxxx’; //DB password
$kdataname=’xxxxx’; //DB name

// DB connect
$db=mysql_connect(“$khost”,”$kuser”,”$kpassword”);
mysql_select_db(“$kdataname”,$db);
?>

—— make_table.php 소스 ——————————————-
// 실시간(?) 접속자 보여주기 by 오길호(prince@kilho.net/k2lab.com)
//
// Subject : 초기 테이블 설정

include “config.php”;
mysql_query(“create table KILHO_NOWUSER (ip char(16) not null primary key, nickname varchar(40), regdate datetime,index (regdate))”,$db) OR die (mysql_error());
mysql_query(“insert into KILHO_NOWUSER values (‘CHECKID’,’CHECKID’,now())”,$db) OR die (mysql_error());
mysql_close($db);
?>

—— 메인부분 소스 —————————————————
// 실시간(?) 접속자 보여주기 by 오길호(prince@kilho.net/k2lab.com)
//
// Subject : 메인 루틴
// Comment : 보여줄 페이지마다 아래를 추가한다. include등을 이용하면 좋을듯
// 이 소스를 캡슐화 해서 사용하면 더 낫겟졈? ㅋㄷ

// 현재 접속중인 아이디(닉네임)를 $NICKNAME에다가 넣어주면
// 접속중인 회원들만 뽑아내는것을 처리할수 있을것이다. (확장성 고려??)

include “config.php”;

// 변수 초기화
$limittime=60; // 1분마다 검사함
$REMOTE_ADDR = $HTTP_SERVER_VARS[‘REMOTE_ADDR’];

// 사용자 IP가 있는지 체크
// 있으면 접속시간만 업데이트 시켜준다, 없으면 IP와 접속시간을 추가시킨다
$chkip=mysql_fetch_row(mysql_query(“select count(ip) from KILHO_NOWUSER where ip=’$REMOTE_ADDR'”));

if($chkip[0])
mysql_query(“update KILHO_NOWUSER set nickname=’$NICKNAME’,regdate=now() where ip=’$REMOTE_ADDR'”);
else
mysql_query(“insert into KILHO_NOWUSER (ip,nickname,regdate) values (‘$REMOTE_ADDR’,’$NICKNAME’,now()-‘$limittime’)”);

// 체크한 시간이 3분이 넘는지 알아본다
// 3분이 넘으면 체크값을 초기화 시키고, 3분이 넘은 데이터를 지운다.
// 180 이라고 적힌부분이 3분을 의미함 ^^
$row=mysql_fetch_row(mysql_query(“select regdate from KILHO_NOWUSER where ip=’CHECKID’ and regdate if($row[0])
{
mysql_query(“update KILHO_NOWUSER set regdate=now() where ip=’CHECKID'”);
mysql_query(“delete from KILHO_NOWUSER where regdate }

// 출력시켜준다. ^^
$result=mysql_query(“select ip,nickname from KILHO_NOWUSER where ip<>‘CHECKID'”);
while($row=mysql_fetch_row($result))
echo $row[1].'[‘.$row[0].’]
‘;

mysql_close();
?>

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다