< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<html>
<cabeza>
<título>Documento sin título</título>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
</cabeza>
<cuerpo>
<%
acabado tenuegetip,showip,allip
'////////////////////////////////////////////////// /// ////////
'El programa aún no está muy optimizado y se modificará más adelante.
'La base de datos utilizada por este programa es - "Feng Zhihong" - escrita por - "Punt" - la base de datos de IP incluida en el software y
'La "Tabla de asignación de direcciones IP global.chm" escrita por el autor de "Guohua Soft" - "Feng Guohua" - se combina en una
'Gracias a "Feng Zhihong" y "Feng Guohua" por proporcionar datos.
'Todavía hay muchas direcciones IP duplicadas en la base de datos. Espero que alguien pueda eliminarlas y reducir el tamaño de la base de datos.
'Mi programa todavía es muy torpe. Espero que todos puedan darme más opiniones y comunicarse más.
'////////////////////////////////////////////////// /// //////////
'Solución: www.downcodes.com
'La IP del cliente obtenida suele ser 202.11.25.1 y el formato de IP en la base de datos es 202.011.025.001, lo que requiere la IP obtenida
'Convierte la IP del cliente al mismo formato que la IP en la base de datos
'Debido a que la IP que utilizamos actualmente está dividida en 4 segmentos, cada segmento tiene 3 dígitos, separados por "."
'Entonces mi idea es dividir la IP del cliente en 4 segmentos con el símbolo ".", es decir, 202/11/25/1.
'Luego verifique cada párrafo por separado. Si tiene 3 dígitos, permanecerá sin cambios; si tiene menos de 3 dígitos, será 2 dígitos. Agregue 1 0 delante del párrafo y será 1. De manera similar, agregue 2. 0s.
'Después de obtener la IP formateada, elimine el último segmento de la IP, es decir, tome los primeros 11 dígitos, incluido ".", compárelo con los primeros 11 dígitos del campo startip en la base de datos y encuentre el mismo valor
'Porque se puede ver en la base de datos que los primeros tres segmentos de startip y endip son iguales, y el último segmento es solo la dirección de subred interna y se puede eliminar.
'Así que simplemente tome los primeros 11 dígitos de cualquier campo de startip o endip y compárelo con los primeros 11 dígitos de la IP del cliente para encontrar la ubicación correcta.
'////////////////////////////////////////////////// /// ///////////////
función checkip_trueip()
'Obtener la IP real del cliente
getclientip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 'Si el cliente usa un servidor proxy, el método Request.ServerVariables("REMOTE_ADDR") solo puede obtener un valor nulo, entonces se debe usar el método ServerVariables("HTTP_X_FORWARDED_FOR")
Si getclientip = "" Entonces
getclientip = Request.ServerVariables("REMOTE_ADDR")'Si el cliente no usa un proxy, Request.ServerVariables("HTTP_X_FORWARDED_FOR") obtendrá un valor nulo y se debe usar el método Request.ServerVariables("REMOTE_ADDR")
terminar si
checkip_trueip = obtener sugerencia de cliente
función final
'////////////////////////////////////////////////// /// ////////
función getaccessrecordset(db,sql,mark,read)'Obtener objeto Recordset
set conn=getaccessconn(db)'Los parámetros de entrada son la ruta relativa de la base de datos db, declaración sql-SQL, marcar, leer son métodos de lectura de la base de datos, 1,1 son de solo lectura, 1,3 son de lectura y escritura
'constr="Provider=microsoft.jet.oledb.4.0;"&"data Source="&Server.MapPath(db)
'constr.abierta
establecer getaccessrecordset=server.CreateObject("ADODB.Recordset")
getaccessrecordset.open sql, conexión, marca, lectura
Función final
'////////////////////////////////////////////////// /// ///////////
función getaccessconn(db)'Obtener el objeto de conexión
establecer getaccessconn=server.CreateObject("ADODB.Connection")
'constr="DRIVER={CONDUCTOR DE ACCESO MICROSOFT (*.MDB)};DBQ="&SERVER.MAPPATH("allcon/#bbsall.mdb")
constr="Provider=microsoft.jet.oledb.4.0;"&"data Source="&Server.MapPath(db)
getaccessconn.open constr
función final
'////////////////////////////////////////////////// /// ///////////
getip tenue
'getip=(trim(request.ServerVariables("REMOTE_ADDR")))'Obtener IP del cliente
'getip=(trim(request.QueryString("comes"))) 'Ingrese la IP usted mismo para probar
'respuesta.Escribir(obtenertip&"<br>")
'////////////////////////////////////////////////// /// ///////////
function checkip_locations(checkstring) 'Devuelve la función de ubicación del carácter delimitador en IP
checkip_locations=Instr(checkstring,".") 'Asigna el valor de la ubicación a la función
función final
'////////////////////////////////////////////////// /// ///////////
'La siguiente función es dividir IP y obtener la cadena restante de IP en el lado derecho del símbolo "."
función checkip_left(cadena de verificación)
ubicaciones_left=checkip_locations(checkstring) 'Obtiene la ubicación donde "." aparece por primera vez en la cadena restante de IP
iplength_left=Len(checkstring) 'Obtiene la longitud de la cadena restante de la IP
divide_locations_left=iplength_left-locations_left 'Obtiene la posición donde "." aparece por primera vez en la cadena restante de IP, cuántos dígitos hay de derecha a izquierda
ipstr_left=Right(checkstring,divide_locations_left) 'Obtiene la cadena restante de IP en el lado derecho del símbolo "."
checkip_left=ipstr_left 'Asigna la cadena obtenida arriba a la función
función final
'////////////////////////////////////////////////// /// //////////
'La siguiente función es dividir la IP y obtener la cadena de IP a la izquierda del símbolo "." después de cada división, es decir, la IP se divide en cuatro segmentos y la función de cadena de cada segmento
es checkip_right(checkstring)
ubicaciones_right=checkip_locations(checkstring) 'Obtiene la ubicación donde "." aparece por primera vez en la IP
iplength_right=Len(checkstring) 'Obtener la longitud de la cadena IP
divide_locations_right=iplength_right-locations_right 'Obtiene la posición donde "." aparece por primera vez en la cadena restante de IP, cuántos dígitos hay de derecha a izquierda
ipstr11=Trim(Replace(Left(checkstring,locations_right),".","")) 'Elimina el símbolo "." de la cadena a la izquierda del "."
'Si la IP se divide en 4 segmentos y cada segmento tiene menos de 3 dígitos, agregue 0
si Len(ipstr11)="2" entonces ipstr11="0"&ipstr11
si Len(ipstr11)="3" entonces ipstr11=ipstr11
si Len(ipstr11)="1" entonces ipstr11="00"&ipstr11
checkip_right=ipstr11 'Obtiene la cadena antes del símbolo ".", es decir, uno de los cuatro segmentos después de la IP se divide en cuatro segmentos.
función final
'//////////////////////////////////////////////// /// //////////
'Compruebe si la IP es una IP de red interna
'El juicio que escribí se basa en: 127.0.0.0-127.XXX.XXX.255 y 192.0.0.0-192.XXX.XXX.255. Si son estos dos, es la IP de la red interna; de lo contrario, es la IP. red externa.
'No sé cuál es la base para juzgar la propiedad intelectual interna, así que necesito que expertos me den algunos consejos y hagan correcciones.
función checkiplocal(cadena de verificación)
tenue re1
set re1=new RegExp 'Obtener objeto de expresión regular
La expresión en 're1.pattern es que la IP de la red interna debe comenzar con 127 o 192, y en el medio debe haber entre 1 y 3 números del 0 al 9 más "."
re1.pattern="^(127.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})|(192. [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})$"
re1.global=falso
re1.Ignorecase=falso
checkiplocal=re1.test(cadena de verificación)
establecer re1 = nada
función final
'////////////////////////////////////////////////// /// ////////////////////////
función checkip_remote(cadena de verificación)
dim iplength 'La longitud de la cadena IP
ubicaciones tenues '"."La ubicación donde aparece el personaje
iplength=Len(verificación)
ubicaciones=Instr(checkstring,".") 'Recupera la posición donde aparece por primera vez el símbolo "." en la cadena IP de izquierda a derecha
'Dividimos la IP en 4 segmentos con caracteres "."
ubicaciones2=ubicaciones-iplength
ipstring1=Izquierda(cadena de verificación,ubicaciones)
ipstring2=Derecha(cadena de verificación,ubicaciones2)
función final
'////////////////////////////////////////////////// /// ////////
'////////////////////////////////////////////////// /// ////////
ipinfo_local="¡Su IP es una IP de intranet!"
ipinfo_remote="IP de red externa!"
getip=checkip_trueip()
currentip=checkiplocal(getip) 'Llame a la función checkiplocal() para verificar la IP obtenida y determinar si es una dirección de red interna o una dirección de red externa
'si currentip=true entonces' código de prueba
'respuesta.Escribir(ipinfo_local)
si currentip=true entonces 'es falso
Response.Write(ipinfo_local)' indica la IP de la red interna
demás
'Convertir
'Lo siguiente es una extracción de bucle y llenado de bits con 0 para dividir la IP en 4 segmentos
ubicaciones=checkip_locations(getip)'Obtener la ubicación donde "." aparece por primera vez en la IP antes de la primera división
iplength=Len(getip) 'Obtiene la longitud de la IP del cliente
divide_locations=iplength-locations 'Obtiene la ubicación de la IP del cliente contando de derecha a izquierda hasta el primer "." de la IP contando de izquierda a derecha.
ipstr1=Recortar(Reemplazar(Izquierda(obtenertip,ubicaciones),".",""))
ipstr2=Right(getip,divide_locations)'Obtiene el valor restante en el lado derecho del cliente después de la primera división
'Si la IP se divide en 4 segmentos y cada segmento tiene menos de 3 dígitos, agregue 0
if Len(ipstr1)="2" then ipstr1="0"&ipstr1 'La longitud es dos, menos de tres, agrega un 0 antes de la cadena
si Len(ipstr1)="3" entonces ipstr1=ipstr1 'Según la analogía anterior
if Len(ipstr1)="1" then ipstr1="00"&ipstr1 'El ipstr1 en este momento es el primer segmento de IP
ipstr12=checkip_right(ipstr2) 'El ipstr12 en este momento es el segundo segmento de la IP
ipstr122=checkip_left(ipstr2)
ipstr13=checkip_right(ipstr122) 'El ipstr13 en este momento es el tercer segmento de la IP
ipstr14=checkip_left(ipstr122) 'El ipstr14 en este momento es el cuarto segmento de IP
si Len(ipstr14)="1" entonces ipstr14="00"&ipstr14 'Agrega 0 al cuarto segmento de la IP obtenida. Este paso no es necesario.
si Len(ipstr14)="2" entonces ipstr14="0"&ipstr14
si Len(ipstr14)="3" entonces ipstr14=ipstr14
'response.write ipstr1&"<br>" 'Escribe el valor de cada segmento después de la segmentación IP
'respuesta.escribir ipstr12&"<br>"
'respuesta.escribir ipstr13&"<br>"
'respuesta.escribir ipstr14
allip=ipstr1&"."&ipstr12&"."&ipstr13&"."&ipstr14
terminargetip=izquierda(allip,11)
ipaddr tenue, iplocal, sqls
'La siguiente declaración SQL es para extraer si el valor de 11 bits izquierdo del campo startip es igual al valor de 11 bits izquierdo de la IP del cliente.
sqls="SELECCIONE país_estado,areauser DESDE ip DONDE Izquierda(startip,11)='"&finishgetip&"'"
set rs=getaccessrecordset("#worldip.mdb",sqls,"1","1") 'Obtener el valor de la consulta
si rs.eof entonces 'Si no se encuentra ningún valor igual a la IP del cliente
showip=checkip_trueip() 'Asigna la IP del cliente a showip
ipaddr="Región desconocida" 'País o provincia
iplocal="Ubicación desconocida" 'Lugar específico
demás
showip=checkip_trueip()
ipaddr=rs("país_estado")
iplocal=rs("usuario de área")
terminar si
'response.write("Su IP es: "&showip&" ")
'response.write("Usted es de: "&ipaddr&" ")
'respuesta.write("Usted es:"&iplocal)
rs.cerrar
establecer rs = nada
%>
<%="Tu IP es:"&showip&" "%>
<%="Eres de:"&ipaddr&" "%>
<%="Tú eres:"&iplocal&"<br>"%>
Si hay un error en la dirección IP, comuníquese conmigo o descargue la base de datos para corregirla, ¡gracias! <br>
<table width="760" border="0" cellspace="0" cellpadding="0">
<tr>
<td width="203"><a href="Script56.rar">Descargar Script56.CHM</a>-->1,34M</td>
<td width="548">Introducción: documentación de ayuda de Microsoft, incluida la sintaxis de VBscript, la sintaxis de JScript y las expresiones regulares</td>
<td ancho="3"> </td>
<td ancho="6"></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="ipsearch.rar">Descargar el programa de búsqueda global de direcciones IP ASP</a></td>
<td>ASP+ACCESO tamaño 401K formato rar</td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td><font color="#000099"> </font> <font color="#0000FF"> </font></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Si se desconoce su IP, envíe su ubicación si lo desea:</td>
<td>
<nombre del formulario="form1" método="publicar" acción="postip.asp">
<table width="100%" border="1" cellspace="0" cellpadding="0">
<tr>
<td width="21%"> Provincia: </td>
<td ancho="44%">
<tipo de entrada="texto" nombre="país_estado">
</td>
<td ancho="35%"> </td>
</tr>
<tr>
<td width="21%">Ubicación específica o usuario de red:</td>
<td ancho="44%">
<tipo de entrada="texto" nombre="usuario de área">
</td>
<td width="35%">Por ejemplo: Universidad Tsinghua de Beijing o usuarios de Netcom de Beijing</td>
</tr>
<tr>
<td ancho="21%"> </td>
<td ancho="44%">
<tipo de entrada="oculto" nombre="startip" valor="<%=finishgetip&".000"%>">
<tipo de entrada="oculto" nombre="endip" valor="<%=finishgetip&".255"%>">
</td>
<td ancho="35%"> </td>
</tr>
<tr>
<td ancho="21%"> </td>
<td ancho="44%">
<tipo de entrada="enviar" nombre="Enviar" valor="Enviar">
</td>
<td ancho="35%"> </td>
</tr>
</tabla>
</formulario>
</td>
<td></td>
<td></td>
</tr>
</tabla>
<%
terminar si
%>
</cuerpo>
</html>
Dirección de demostración: http://www.knowsky.com/ip