현재접속자에 동일 IP에서 서로다른 아이디 보이기 > 그누3 팁자료실

그누3 팁자료실

현재접속자에 동일 IP에서 서로다른 아이디 보이기 정보

그누호환 현재접속자에 동일 IP에서 서로다른 아이디 보이기

본문

안녕하세요..

현재 제가 만지고 있는 서버는 인터넷에 직접 연결되어 있고, 회원들은 회사 방화벽 안에 있는데 회사 방화벽 안에서 서로다른 회원 수천명이 각각의 아이디를 가지고 접속해도 항상 최근접속자 1명만 표기되고 있었습니다.

그래서 그누보드 소스를 살펴보니 'sql_schema.sql'에 있는 내용중에 $cfg[table_login] 항목을 보면 PRIMARY KEY (lo_ip), 가 있는데 이것을 PRIMARY KEY (lo_ip,mb_id), 으로 변경하였더니 방화벽 안에서 동일한 아이피와 서로다른 아이디로 접속한 리스트를 모두 보여주었습니다.

크게 문제는 없어 보이는데 괜찮은지 모르겠습니다. 고수님들의 한 수 가르침을 기다리며 이만 줄입니다.

==== sql_schema.sql ====

DROP TABLE IF EXISTS $cfg[table_login];
CREATE TABLE $cfg[table_login] (
lo_ip varchar(15) NOT NULL default '',
mb_id varchar(20) NOT NULL default '',
lo_datetime datetime NOT NULL default '0000-00-00 00:00:00',
lo_location varchar(255) NOT NULL default '',
PRIMARY KEY (lo_ip),
KEY lo_datetime (lo_datetime,mb_id)
) TYPE=MyISAM;

에서 PRIMARY KEY (lo_ip), 을 PRIMARY KEY (lo_ip,mb_id), 으로 변경하여 DB 구조를 바꾸시면 됩니다.

추가 : 위의 내용만 변경하면 현재접속자에서 위치가 변동 되지 않으므로 index.php 도 변경하셔야 합니다. 작업전 index.php 는 꼭 백업해 놓으세요. ^^;

==== index.php ====

수정전 :
if (!$result) { // 오류가 발생한다면 UPDATE 함
$sql = " update $cfg[table_login]
set mb_id = '$member[mb_id]',
lo_datetime = '$now',
lo_location = '$location'
where lo_ip = '$HTTP_SERVER_VARS[REMOTE_ADDR]' ";
@mysql_query($sql);

수정후 :
if (!$result) { // 오류가 발생한다면 UPDATE 함
$sql = " update $cfg[table_login]
set lo_datetime = '$now',
lo_location = '$location'
where lo_ip = '$HTTP_SERVER_VARS[REMOTE_ADDR]' and mb_id = '$member[mb_id]' ";
@mysql_query($sql);
추천
0
  • 복사

댓글 전체

© SIRSOFT
현재 페이지 제일 처음으로