홈   즐겨찾기   시작페이지로   문의하기
컨설팅 인큐베이팅 파트너쉽 ToTs
IT컨설팅
CI/BI제작
홈페이지제작
솔루션도입
호스팅
유지보수&운영대행
마케팅
모바일웹
ToTs 사례
상담현황
Q&A
서비스 ToTs 사례
전체글 2086 건
중소 유통 기업 erp 시스템 추천해주세요. 쉽게 배울수있는 프로그램으로요.
온라인 사업에 필요한것좀 알려주세요
개인사이트 개설 질문
의류 물류창고 재고관리,입출고
중소규모 회사 ERP 프로그램 저렴하고 쉬운 방법으로 사용 가능한곳 있을까요?
배달대행 창업문의드리려합니다
쇼핑몰 사이트 개설
빌라 관리회사 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사례 찾아오시는 길