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

· 22년 전 · 2009 · 2
안녕하세요..

현재 제가 만지고 있는 서버는 인터넷에 직접 연결되어 있고, 회원들은 회사 방화벽 안에 있는데 회사 방화벽 안에서 서로다른 회원 수천명이 각각의 아이디를 가지고 접속해도 항상 최근접속자 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);
|

댓글 2개

우와...또 그런 방법이 있네요...
좋은팁이로군요! 그전에 ip 로 안잡히면, 쿠키로 쓰는 식으로도 하고,
그런 식으로도 하지요.
댓글을 작성하시려면 로그인이 필요합니다.

그누3 팁자료실

+
제목 글쓴이 날짜 조회
22년 전 조회 2,659
22년 전 조회 2,568
22년 전 조회 1,949
22년 전 조회 1,937
22년 전 조회 4,698
22년 전 조회 1,893
22년 전 조회 2,913
22년 전 조회 2,780
22년 전 조회 1,756
22년 전 조회 2,010
22년 전 조회 1,883
22년 전 조회 1,550
22년 전 조회 2,165
22년 전 조회 1,779
22년 전 조회 2,047
22년 전 조회 2,014
22년 전 조회 1,972
22년 전 조회 2,641
22년 전 조회 3,096
22년 전 조회 1,823