로그인 중복체크가 이렇게 어려울줄이야~~ 여러가지로 검색을 해보아도 나오지가 않아서 저 나름데로 짜집기(?)를 하여 중복체크 성공을하게되었습니다.
혹여나~ 다른곳에서 찾아헤메지마시고~ 제가 쓴방법을 한번 써보시기 바랄께요~~
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 형식의 코드를 분석 참조하여다른곳에서 로그인이 이루어졌는지를 판단 및 처리를하게되는 스크립트이다.
다른곳 또는 다른 웹브라우저로 로그인을하게되면 기존에 로그인된 웹페이지는 자동적으로 로그아웃이 이루어지게된다.
여기까지 섭군이가 대충 짜집기한 중복로그인 방지 소스코드였습니다.
실질적으로 구상은 쉽게되는데 짜맞추려니... 여간 힘든게 아니네요 ㅠㅠ;;
질문은 않받을래요~ 머리가 뽀개질꺼 같거든요 ㅎㅎ;;;