웹마스터 팁
여러 서버에서 하나의 회원목록 관리&사용
2008.01.04 22:18
여러 홈페이지나 서버에서 하나의 회원목록을 사용하기 위해 수정을 하는방법입니다.
예를들어 http://aaa.com 에 가입을 하면 http://aaa.com , http://bbb.com , http://ccc.com 모두 같은 아이디로 로그인이 되고 bbb.com 이나 ccc.com 에서 가입을 해도 마찬가지로 작동하게 됩니다.
포탈같은 개념으로 생각하시면 쉬울듯합니다.
먼저 한곳에 설치를 합니다. 회원정보를 보관할 곳입니다.
그리고 다른곳에도 설치를 한 후 아래와 같이 수정해주세요.
/** * @brief : 쿼리문의 실행 및 결과의 fetch 처리 * * query : query문 실행하고 result return\n * fetch : reutrn 된 값이 없으면 NULL\n * rows이면 array object\n * row이면 object\n * return\n **/ function _query($query) { if(!$this->isConnected()) return; // 쿼리 시작을 알림 $this->actStart($query); // 쿼리 문 실행 if(stripos($query, 'xe_member') !== false || stripos($query, 'xe_sequence'+ '+ ') !== false) { $tmp=mysql_connect("서버주소", "mysql아이디", "mysql암호"); mysql_select_db("db명", $tmp); mysql_query("set names 'utf8'", $tmp); $result = mysql_query($query, $tmp); } else { $result = @mysql_query($query, $this->fd); } // 오류 체크 if(mysql_error($this->fd)) $this->setError(mysql_errno($this->fd), mysql_error($this->fd)); // 쿼리 실행 종료를 알림 $this->actFinish(); // 결과 리턴 return $result; }
mysql을 사용해서 mysql에 대한 설정만 있지만 다른것도 비슷하게 사용가능할것입니다.
좀 깔끔하게 수정하여 사용하고 싶었는데 이렇게밖에 안되는듯합니다.
xe_member 를 'xe_member' 로 바꿔야 더 정확한 처리가 될것 같은데 이부분은 아직까지 문제가 안나와서 그냥 쓰고있습니다;
http://ucc.funiz.com 이랑 http://nintendoplay.net 이랑 현재 쓰고 있습니다.
// 쿼리 문 실행 $tables[]="xe_point"; $tables[]="xe_member"; $tables[]="xe_sequence"; foreach($tables as $key => $val) { if(stripos($query, $val) !== false) { $islink=true; break; } } if($islink) { $tmp=mysql_connect("서버", "아이디", "암호"); mysql_select_db("db명", $tmp); mysql_query("set names 'utf8'", $tmp); $result = mysql_query($query, $tmp); } else { $result = @mysql_query($query, $this->fd); }
- [2011/08/17] 묻고답하기 진짜 이상해요 도와주세요~~ *1
댓글 24
-
똑디
2008.01.04 22:59
-
화니군
2008.01.04 23:04
둘다 제로보드를 써야 합니다.
먼저 설치되어있어도 상관은 없습니다. -
똑디
2008.01.04 23:20
제로보드로 만들어진 사이트끼리 전랴적 제휴로 엮어질때 정말 유용한 팁이 될수 있을것 같네요.
제로보드와 다른 로그인을 필요로 하는 프로그램, 예를들어 쇼핑몰프로그램 과 같은 것을 위와같이 사용할 수 있는 방법은 없을까요?
두개의 프로그램이 다르다 보니 두개의 회원디비에서 공통적으로 사용되는
아이디,패스워드,이름 등을 기준으로 해서 처리를 한다면 가능할것 같기도한데.....
물론 완전 다른 부분은 그냥 넘어가더라도...
이름,아이디,패스워드만 같이 처리를 한다면 일단은 로그인 한번으로 사용할수있도록 할 수 있을것 같은데...
신기한게 나오다 보니 생각이 막~~이상적으로 펼쳐지네요...^^
좋은 자료 다시한번 감사 드리며, 정말 유용한 정보인것 같습니다. -
화니군
2008.01.05 07:18
그냥 회원정보를 읽어서 사용하는건 가능할듯합니다. 물론 그에따른 개발이 있어야하겠지만요^^;
-
똑디
2008.01.05 09:41
두개의 회원디비를 분석해서 동일한 필드부분은 같이 사용하도록만 한다고 해도 정말 멋질것 같네요.
제로보드와 쇼핑몰을 함께 사용하면서 제로보드를 통해 회원가입을 했을경우
쇼핑몰에서 로그인 공유와 함께 동일한 필드부분은 쇼핑몰 디비에도 insert 시키는 형태가 된다면...
물론 수정, 삭제시에도 적용이 되어야 겠지요.
이런 형태가 된다면...
정말 폭 넑게 활용이 가능하지 않을까 생각이 듭니다.
제로보드와 제로보드간의 공유뿐만 아니라 제로보드와 타 프로그램의 공유도 한번 검토 바랍니다. ^^
본 팁을 제 홈에도 소개토록 하겠습니다. -
팔공산
2008.01.05 00:19
이 소스를 적용해 보니 홈피자체가 열리지 않는데요.
$tmp=mysql_connect("서버주소", "mysql아이디", "mysql암호");mysql_select_db("db명", $tmp);
mysql_query("set names 'utf8'+ '", $tmp);
위의 소스에서 "서버주소" "mysql아이디" "mysql암호" "db명" 이 부문만 적어주면 되는것 아닌지요. -
화니군
2008.01.05 07:19
mysql권한 설정을 확인해보셔야합니다.
localhost만 접근허용이 되어있으면 오류가 나올겁니다.
제로보드에서 오류를 숨겨서 안나올 수 있긴한데
해당 아이디의 host를 %로 변경해보시기 바랍니다 -
가장아름다운사랑
2008.01.05 07:40
천재군요!!! -
주하니
2008.01.05 17:59
1) a,b 서버가 있다면 위 소스를 b 서버의 파일에서 수정을 하는건가요?
2) -> 서버주소" "mysql아이디" "mysql암호" "db명
요부분은 내용은 먼저설치된 a와 나중 b 서버가 있다면 어느쪽 서버정보를 적는건가요? -
화니군
2008.01.05 23:59
b서버라고 해야하나요
원본 서버가 아닌곳에서 수정을해서 원본서버에 접속하게 해야합니다. -
가클
2008.01.06 17:15
하나의 회원목록 관리 & 사용은 좋은거같은데... 회원포인트는 적용이 안되는거 같습니다..
-
화니군
2008.01.07 01:18
point도 작동하게 추가하였습니다 -
똑디
2008.01.07 10:55
조금 욕심을 부려 본다면..포인트같은 경우 선택적으로 적용할 수 없을까요?
포인트도 같이 적용을 시킬것인지...아님 그냥 회원정보만 공유를 할것인지...^^ -
똑디
2008.01.10 16:25
A, 와 B 두개의 홈피가 있는데..
B 홈페이지의 class/db/DBMysql.class.php 파일을 열어서
-
/** * @brief : 쿼리문의 실행 및 결과의 fetch 처리 * * query : query문 실행하고 result return\n * fetch : reutrn 된 값이 없으면 NULL\n * rows이면 array object\n * row이면 object\n * return\n **/ function _query($query) { if(!$this->isConnected()) return; // 쿼리 시작을 알림 $this->actStart($query); // 쿼리 문 실행 if(stripos($query, 'xe_member') !== false || stripos($query, 'xe_sequence') !== false) { $tmp=mysql_connect("A서버주소", "A서아이디", "A서버패스워드"); mysql_select_db("A서버디비명", $tmp); mysql_query("set names 'utf8'", $tmp); $result = mysql_query($query, $tmp); } else { $result = @mysql_query($query, $this->fd); } // 오류 체크 if(mysql_error($this->fd)) $this->setError(mysql_errno($this->fd), mysql_error($this->fd)); // 쿼리 실행 종료를 알림 $this->actFinish(); // 결과 리턴 return $result; }
위 처럼 A서버 정보를 입력하고 테스트를 해보는데 B 홈페이지가 그냥 백지 상태로 나오네요.
뭐가 잘못된걸까요?
혹시나 해서 A서버의 db_config.php 파일에서 host부분을 localhost에서 % 바꿔도 마찬가지네요.
제가 놓친게 있나요? -
-
화니군
2008.01.10 23:44
- $tmp=mysql_connect("A서버주소", "A서아이디", "A서버패스워드");
- mysql_select_db("A서버디비명", $tmp);
- mysql_query("set names 'utf8'", $tmp);
이렇게만 따로 PHP파일을 만들어서 실행해보세요
오류메세지가 나올겁니다
아마 mysql접근권한문제일듯합니다
-
똑디
2008.04.09 12:26
DB 접근은 문제가없어 보이는데....
위에 적어 놓으신 db접근 부분은 테스트를 해봤는데 정상이거든요.
이기능이 지원되면 상당히 좋을것 같은데...많이 아쉽네요. -
박대우
2008.01.18 11:08
좋은 팁 감사합니다.
혹시 ZB4와 XE 사이에서도 적용 가능할까요? -
tester
2008.02.04 06:12
꼭 활용해 보고 싶은데 저역시도 똑띠님과 같은 백지상태로 나타나는 현상이네요.
성공하신분이 안계신지...? -
궁금이
2008.03.04 14:29
제로 보드 4 아이디를 제로 보드 XE 와 같이 사용 할려면 안되는가요 ??
XE 와 XE 만 되는 가요 ? -
hacierpark
2008.03.21 03:12
난 왼지,,아무 효과 반응도 없습니다,, b에서 a 서버아이디로 로그인할려면은 회원아이디가 존재하지않는다고만나오네요
-
울랄라놀자
2008.04.17 12:48
저의 경우에는 innoDB로 설정하여 사용하고 있습니다..
그럴 경우에는 어떻게 수정해야 할지 알려주시면 너무나 고맙겠습니다.. -
이슈카ㆀ
2008.05.08 11:27
워! 멋집니다!
-
힘쓰
2008.09.21 03:36
point 도 적용되게 추가된 부분에 문제가 있는거 같아요?
확인 부탁드립니다.. -
구가
2010.06.04 00:30
이거 지금보니 2년 5개월 지난 글이군요
적용 안 됩니다
기대했는데 퍽 아쉽습니다... 이거 원 방법이 없는건가요 질문 3번씩해도 대답도 없고
정말 멋진 소스 감사합니다. ^^
기존에 운영중인 사이트에 추가로 사이트 하나를 더 만들었을때 추가로 만든 사이트에 기존회원이 가입하지 않고 이용 가능한것인가요?
제로보드와 제로보드, 제로보드와 다른 프로그램을 같이 이용가능한 형태로 지원이 된다면 정말 좋겠네요.