<codepage = 936%>
<html>
<헤드>
<title> 제목없는 문서 </title>
<meta http-equiv = content-type content = text/html = gb2312;
</head>
<body>
<%
Dim FinishGetip, Showip, Allip
'//////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4
``프로그램이 매우 간소화되지 않은 다음 나중에 수정하십시오.
``이 프로그램에 사용 된 데이터베이스는 "Feng Zhihong"- 작곡 "Hacquent"-IP 데이터베이스 및
"Guohua Software Guohua Soft"의 저자-"Feng Guohua"-"Global IP 주소 할당 테이블 .CHM"
`` "Feng Zhihong"과 "Feng Guohua"가 제공 한 데이터에 감사드립니다.
데이터베이스에는 중복 IP 주소가 많이 있습니다. 관심있는 사람이 삭제하고 데이터베이스를 줄일 수 있기를 바랍니다.
``내 프로그램은 매우 서투른 것입니다.
'//////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4
'' 해결책:
``획득 한 클라이언트 IP는 일반적으로 202.11.25.1이며 데이터베이스의 IP 형식은 202.011.025.001이며,이를 얻어야합니다.
``클라이언트 IP는 데이터베이스에서 IP와 동일한 형식으로 변환됩니다.
``우리가 사용하는 현재 IP는 4 개의 세그먼트로 나뉘어지고 3 개의 장소의 각 섹션이며 중간은 ""로 분리됩니다.
``그래서 내 아이디어는 클라이언트 IP를 4 개의 세그먼트로 나누는 것입니다.
``각 단락을 개별적으로 확인하십시오. 3 비트라면 3 개 미만의 경우 변경되지 않습니다.
형식 IP 후 IP의 마지막 섹션이 제거됩니다. 즉, 데이터베이스의 STARTIP 필드의 상위 11 비트와 비교하여 처음 11 비트가 동일한 값을 찾으십시오.
``데이터베이스에서 볼 수 있기 때문에 STARTIP 및 ENDIP의 첫 세 단락은 동일하며 마지막 단락은 내부 서브넷 주소로 제거 할 수 있습니다.
``클라이언트 IP의 상위 11 개와 비교하여 모든 STARTIP 또는 ENDIP 필드의 11 자리 숫자를 가져 오면 올바른 위치를 찾을 수 있습니다.
'//////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 //////////////////////////// Gons
함수 checkip_trueip ()
``클라이언트를 진짜 IP로 가져 가십시오
getClientip = request.servariables (http_x_forwarded_for) ''클라이언트가 프록시 서버를 사용하는 경우 request.servervariables (remote_addr) 메소드를 사용하십시오
getClientIP =이면 그렇다면
getClientip = equest.servariables (remote_addr) ''클라이언트가 프록시를 사용하지 않으면 request.servervariables (http_x_forwardededded_for)가 mote_addr) 메소드입니다
끝 If
checkip_trueip = getclientip
엔드 기능
'///////////////////////////////////////////////////////////////////////////////////4 ////////////////////////////////4
함수 getAccessRecordset (db, sql, mark, read) '' '
set conn = getAccessconn (db) '' ''입력 매개 변수의 상대 경로는 db-database, sql-sql statement, mark, read is database reading method, 1,1은 읽기 만 읽기, 1,3은 읽기 및 읽기와 쓰기를 위해 쓰기는 읽고 쓰고 있습니다.
''constrs = microsoft.jet.oledb.4.0;
'Conn.open Constr
getAccessRecordset = server.createObject (adodb.recordset)
getAccessRecordset.open sql, conn, mark, read
엔드 기능
'//////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 /////////////////////////
함수 getAccessconn (db) '' '연결 객체를 얻으려면
getAccessconn = server.createObject (adodb.connection)를 설정합니다.
''ress = {Microsoft Access Driver (*.mdb)};
constr = provider = microsoft.jet.oledb.4.0;
getAccessconn.open constr
엔드 기능
'//////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 /////////////////////////
희미한 getip
``getip = (trim (request.servervaribles (remote_addr))) '' '
``getIP = (trim (request.queryString (comes)) ')' '직접 IP 테스트 입력
'응답 .Write (getip & <br>)
'////////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 ////////////////////////////////4
함수 checkip_locations (checkstring) '' '
checkip_lock_locations = inst (checkstring,.) ''함수에 값을 부여합니다.
엔드 기능
'//////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 ////////////////////////////////4
``다음 기능은 디비전 IP이고 각 세분화가 얻은 후 오른쪽에 나머지 IP 문자열입니다.
함수 checkip_left (checkstring)
locations_Left = CheckIP_Locations (CheckString) '' ''
iplength_left = len (checkstring) ''나머지 IP 스트링의 길이
divide_locations_left = iplength_left-locations_left ''IP 문자열에 첫 번째가 나타난 첫 번째 장소를 얻으려면 ""
ipStr_Left = right (checkstring, divide_locations_left) '' '부서를 얻은 후 "나머지 IP 문자열은"오른쪽에 남아 있습니다. "
checkip_left = ipstr_left ''위에서 얻은 문자열을 함수에 제공합니다.
엔드 기능
'//////////////////////////////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////////4 ////////////////////////////////4
``다음 기능은 IP이며 각 세그먼트 화가 얻은 후 "왼쪽의 IP 문자열입니다.
함수 checkip_right (checkstring)
locations_right = checkip_locations (checkstring) ''
IPLENGTH_RIGHT = LEN (CheckString) '' 'IP 문자열 길이 받기
divide_locations_right = iprength_right-locations_right '' 'IP 문자열에 첫 번째로 나타난 첫 번째 장소를 얻으려면 오른쪽에서 왼쪽에서 왼쪽에서 몇 비트 수
ipStr11 = trim (reft (왼쪽 (checkstring, locations_right),.) '' ''. ""왼쪽에 "". "
``IP가 4 개의 단락으로 나뉘면 각 단락은 3 자리 미만이고 0
Len (ipstr11) = 2 인 경우 ipstr11 = 0 & ipstr11
LEN (ipstr11) = 3 인 경우 ipstr11 = ipStr11
LEN (ipstr11) = 1 인 경우 ipstr11 = 00 & ipStr11
checkip_right = ipStr11 '' '이전의 IP 점수는이 분할 후에 얻었습니다