출처: Unix.co.kr
웹브라우저로 현재 접속자수를 볼 수 있습니다. ^^
안녕하세요. 하늘입니다.
제가 전번에 짜근 커뮤니케이션의 게시판에서 받은 질문을 보고 재미있어서 제작한 것입니다.
보통 웹서버의 특성상 - 결과를 보내고 끊어버리는 -
현재 접속중인 정확한 인원을 나타내기는 힘들죠.
여러가지 방법이 있겠지만 전 리프레쉬 기능을 이용해서 클라이언트와 반복적으로 접속하는 방법으로 만들어 보았습니다.
사용할 때는 작은 프레임을 만들어서 그 안에 두고 사용하시는 것이 좋을 겁니다.
정기적으로 리므레쉬를 하니까요.
이것이 싫으신 분들은 쿠키를 이용하면 되는데, 이 방법이 더 정확할것 같아서요.
아래 소스입니다.
================================================================
테이블 스키마
================================================================
# MySQL dump 6.4
#
#--------------------------------------------------------
# Server version 3.22.27
#
# Table structure for table 'session'
#
CREATE TABLE session (
ip varchar(15) DEFAULT '' NOT NULL,
last_time timestamp(14),
PRIMARY KEY (ip)
);
#
# Dumping data for table 'session'
#
============================================
==============================================
session.php3
===============================================
<?
// Mysql DB 사용자 정보
$db_host = "host_name";
$db_user = "user_name";
$db_passwd = "passwd";
$db_name = "db_name";
// 사용자의 정보를 갱신하는 시간 간격이다.
// 홈페이지 동시 접속수의 평균을 내서 가장 적절한 값을 찾는다.
// 보통 10초에서 30초 사이의 값이면 좋다고 생각한다.
$refresh_time = 30;
// 접속이 끊긴 사용자의 한계시간.
// 보통 리프레시 타임보다 5~10초 정도 많게 설정하면 된다.
$kill_time = 40;
// 데이타 베이스 연결
$connect = mysql_connect( $db_host , $db_user , $db_passwd ) or die ( "DB Server Error" );
mysql_select_db( $db_name ) or die( "DB Error" );
// 접속이 끊긴 사용자 삭제
$query = "DELETE FROM session WHERE (now() - last_time) > $kill_time";
mysql_query( $query , $connect );
// 현접속 사용자 확인
$query = "SELECT * FROM session WHERE ip = '$REMOTE_ADDR'";
$result = mysql_query( $query , $connect );
$total = mysql_affected_rows();
// 이미 접속한 사용자라면...
if($total > 0)
{
// 마지막 접속 시간 갱신
$query = "UPDATE session SET last_time = now() WHERE ip = '$REMOTE_ADDR'";
mysql_query( $query, $connect );
}
//처음 접속한 사용자
else
{
$query = "INSERT INTO session VALUES('$REMOTE_ADDR',now())";
mysql_query( $query, $connect );
}
// 총 접속자수 계산
$query = "SELECT count(*) FROM session";
$result = mysql_query( $query , $connect );
$row = mysql_fetch_array( $result );
mysql_close($connect);
// 리프레쉬 해더
echo " <html><head> ";
echo " <meta http-equiv='refresh' content='$refresh_time;url=$PHP_SELF'> ";
echo " </head> ";
echo " <body bgcolor=#CCCC99 text='blue'> ";
echo " <center><font size=1>Now $row[0] Contact</font></center> ";
echo " </body></html> ";
=====================================================================
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|