2010년 11월 11일 목요일

PHP Ajax MySQL 로그인 중복체크

중복 중복 중복 ㅠㅠ;;
로그인 중복체크가 이렇게 어려울줄이야~~ 여러가지로 검색을 해보아도 나오지가 않아서 저 나름데로 짜집기(?)를 하여 중복체크 성공을하게되었습니다.

혹여나~ 다른곳에서 찾아헤메지마시고~ 제가 쓴방법을 한번 써보시기 바랄께요~~

p.s - 완벽하지는 않습니다.  ㅡ,.ㅡ;;

웹 사용환경
서버 : CentOS 5.5
APM : Apache 2.2.14, PHP5.2.12, MySQL5.1.41
사용언어 : PHP, Ajax

아래에 붙여질 소스코드에 대해서는 제가 사용하는 환경의 소스를 그대로 올리도록 하겠습니다.
클래스화 시켜 사용하던건데 일일이 풀기가 애매하네요.. 기억도 안나고 ㅎㅎ;;;

기능 1 - 로그인전이면 새로 데이터를 입력한다. → 로그인처리
기능 2 - 로그인된상태일때 다른곳에서 로그인이되면 먼저 로그인된 페이지는 자동 로그아웃된다.
기능 3 - 같은 브라우져에서 로그인을 중복해서하게되면 로그인정보의 시간만 업데이트가된다.

1. 중복체크를할 테이블 생성
Table: smstmember_session
 Field Type Comment
 sesskey varchar(50) NOT NULL 
 expiry int(10) NOT NULL 
 sessvalue varchar(50) NOT NULL 
 sessid varchar(30) NOT NULL 
 security int(1) NOT NULL 
 remoteip varchar(20) NULL 
저는 위의 형식으로 테이블을 생성하였습니다. ^^

2. 로그인 처리페이지 소스 추가 (ex> login_ok.php)

소스보기

소스와같이 세션DB에 로그인했을때의 세션ID와 사용자 ID 로그인 시간등을 입력하게됩니다.
또한 같은 세션ID일때 로그인을 다시하게되면 로그인 시간이 업데이트됩니다.

3. 로그아웃 처리하기 (ex> logout.php)

소스보기

로그아웃 페이지에서는 세션을 클리어하는것은 물론이고, 로그인하면서 DB에 입력되어있던 로그인정보를 삭제하게됩니다.

4. 중복 로그인 체크페이지 (ex> outlogin_check_session.php)

소스보기

다른곳에서 중복로그인이 되었는지 체크하는 페이지이다.
이 페이지에서는 세션DB의 값과 비교하기위한 정보들을 담고 있는다.
header 페이지나 footer 페이지 즉, 항상 웹페이지에 표시되는 부분에 추가하면 되겠다.

5. 중복 로그인 체크값 추출 (ex> login_check_tender.php)

소스보기

지금보이는 코드는 xml 형식으로 데이터를 추출하게되는 부분이다.
다음으로 설명된 js 파일에서 위의 페이지에서 생성된 xml 코드를 참조하여 로그인여부를 체크하게된다.

6. 중복로그인 체크 및 처리하기 (ex> login_check.js)

소스보기

바로위에서 말했듯이 "login_check_tender.php" 페이지에서 생성된 xml 형식의 코드를 분석 참조하여
다른곳에서 로그인이 이루어졌는지를 판단 및 처리를하게되는 스크립트이다.
다른곳 또는 다른 웹브라우저로 로그인을하게되면 기존에 로그인된 웹페이지는 자동적으로 로그아웃이 이루어지게된다.

여기까지 섭군이가 대충 짜집기한 중복로그인 방지 소스코드였습니다.
실질적으로 구상은 쉽게되는데 짜맞추려니... 여간 힘든게 아니네요 ㅠㅠ;;
질문은 않받을래요~ 머리가 뽀개질꺼 같거든요 ㅎㅎ;;;

댓글 없음:

댓글 쓰기