홈   즐겨찾기   시작페이지로   문의하기
컨설팅 인큐베이팅 파트너쉽 ToTs
IT컨설팅
CI/BI제작
홈페이지제작
솔루션도입
호스팅
유지보수&운영대행
마케팅
모바일웹
ToTs 사례
상담현황
Q&A
서비스 ToTs 사례
전체글 2086 건
개인 쇼핑몰 홈페이지 제작 비용은 얼마 정도 잡으면 될까요??
국내 PG사 비교 특징 정리
웹사이트 제작 비용문의
여행사에 맞는 홈페이지 구축 방법...
서울사랑, 웹사이트. 상상 디자인, 조인스엠, 신비웹.. 이정도로 간추려 봤습니다
css 속성
외국에 포털 사이트를 만들려고합니다
도메인 등록 고민되요~
꽃집 홈페이지를 만드는 데는 얼마정도 잡아야 할까요?
하나투어 홈페이지 제작에 대해 문의 드립니다

#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사례 찾아오시는 길