홈   즐겨찾기   시작페이지로   문의하기
컨설팅 인큐베이팅 파트너쉽 ToTs
IT컨설팅
CI/BI제작
홈페이지제작
솔루션도입
호스팅
유지보수&운영대행
마케팅
모바일웹
ToTs 사례
상담현황
Q&A
서비스 ToTs 사례
전체글 2086 건
생산수량 파악용 바코드 시스템도입
부동산 홈페이지 제작 문의 드려요.
포털싸이트 제작~
예약이 가능한 홈피를 만들고 싶습니다.
커뮤니티 사이트를 제작과 운영하려면 직원이 몇명이나 필요하죠??? 좀 자세히요
기술개발 의뢰를 할려고 하는데.. 어느 곳에서 해야 하나요?
웹사이트 관리운영홍보마케팅 추천부탁합니다
SCM 솔루션을 도입하고자 하는데 ..그게 어떤것인지, 어느 제품이 좋은지 .. 알려주세요
패션 관련 ERP 도입을 하려고 합니다
여성의류 쇼핑몰을 구축하려고 합니다

#asp#로그인 중복 방지
세션은 어떻게 할까...창을 닫아버리면 어쩔까...컴터를 끄면 어쩔까...고민하다가...
QnA에서 힌트를 얻어서...만들었습니다...
필요하신 분은 참고하세요~

우선 두개의 테이블을 만들었습니다...
checklog Table
    - ip(접속 ip)
    - id(사용자 id)
    - loginTime(로그인 시간)

duplicatelog Table (중복접속이 일어났을 경우 로그기록을 남기기 위해서 존재)
    - id(사용자 id)
    - date(날짜)
    - ip(접속 ip)

자주 쓰는 테이블은 checklog Table 하나면 됩니다. 중복체크를 로그기록으로 남기지 않으시면, duplicatelog 테이블은 필요 없습니다.

그래서, 로그인 할때 마다
'로그인 중복 방지#################################################################
        ' 현재날짜 구하기
        strYear = Year(now)
        strMonth = cint(Month(now))
        strDay   = cint(Day(now))
        if cint(strMonth) < 10 then
            strMonth = "0" & strMonth
        end if  
        if cint(strDay) < 10 then
            strDay = "0" & strDay
        end if
        cur_date = strYear & "/" & strMonth & "/" & strDay
        ' 현재날짜 구하기 끝
        ip = Request.Servervariables("REMOTE_ADDR")
        Set dblog=Server.CreateObject("ADODB.Connection")
        dblog.open("logEvent")
        sql = "select * from checklog where id='" & id & "'"
        set rsLog = dblog.execute(sql)

        if rsLog.EOF or rsLog.BOF then '중복 로그인이 아님
            sql = "insert into checklog (id, ip, loginTime) values ('"&id&"', '"&ip&"', '"&cur_date&"')"
            dblog.execute sql
        else    '중복 로그인
            sql = "update checklog set id='"&id&"', ip='"&ip&"', loginTime='"&cur_date&"'"           
            dblog.execute sql
       end if
'       사용자 id로 된 데이터가 없으면 insert를 id로 된 데이터가 있으면 update를 시킵니다.
        dblog.close
        set dblog = nothing
'##############################################################################

그리고, 현재 id와 ip가 맞는지 검사 해주면 되겠죠.
중복 방지가 필요한 페이지에서

'로그인 중복 방지#################################################################  
    ip = Request.Servervariables("REMOTE_ADDR")
    Set dblog=Server.CreateObject("ADODB.Connection")
    dblog.open("logEvent")
    sql = "select * from checklog where id='" & session("mem_id") & "'"
    set rsLog = dblog.execute(sql)    
    if rsLog.EOF or rsLog.BOF then '로그온 안되거나 update 안됨
    else
        if rsLog("ip") <> ip then
            sql = "insert into duplicatelog (id, ip, date) values ('" & session("mem_id") & "', '" & ip & "', '" &
sLog("loginTime") & "')"
            dblog.execute sql
            %>
            <script>
                alert("동일 아이디의 사용자가 접속하여 세션이 종료됩니다.");
                location.class='MIME' href="include/login_ok.asp?sw=logout&returnUrl=<%
Request.ServerVariables("URL")&"?"&Request.ServerVariables("QUERY_STRING")%>";
                // 강제로 로그아웃
            </script>
            <%          
        end if
    end if
    dblog.close
    set dblog = nothing

'로그인 중복 방지#################################################################

저장된 ip와 클라이언트의 ip가 다르면 duplicatelog Table에 기록을 하고, 경고창을 내보내면서...강제로 로그아웃 시킵니다. 그러면 새로 접속된 세션은 살아있으면서 기존에 있던 세션이 끊어지게 되겠죠...기존에 세션이 있다면요... 그리고, 별 필요는 없지만...깔끔하게 정리하기 위해

로그아웃 버튼이 눌렸을때
'로그인 중복 방지#################################################################
Set dblog=Server.CreateObject("ADODB.Connection")
dblog.open("logEvent")
sql = "delete from checklog where id='" & session("mem_id") & "'"
dblog.execute sql

'#################################################################################

만들어진 레코드를 지워놓습니다.
물론, 안 지워도 상관은 없구요~
그럼, 도움이 되셨길...^-^;;;


회사소개 이메일무단수집거부 ToTs사례 찾아오시는 길