< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<html>
<Kopf>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<Körper>
<%
dim Finishgetip,showip,allip
'////////////////////////////////////////////// /// ////////
„Das Programm ist noch nicht sehr rationalisiert und wird später geändert.“
„Die von diesem Programm verwendete Datenbank ist – „Feng Zhihong“ – geschrieben von – „Punt“ – die in der Software enthaltene IP-Datenbank und
„Die vom Autor von „Guohua Soft“ – „Feng Guohua“ – geschriebene „Global IP Address Allocation Table.chm“ ist zu einem zusammengefasst
„Vielen Dank an „Feng Zhihong“ und „Feng Guohua“ für die Bereitstellung der Daten
„Es gibt immer noch viele doppelte IP-Adressen in der Datenbank. Ich hoffe, jemand kann sie löschen und die Größe der Datenbank reduzieren.“
„Mein Programm ist immer noch sehr ungeschickt.“
'////////////////////////////////////////////// /// //////////
'Lösung: www.downcodes.com
„Die erhaltene Client-IP ist normalerweise 202.11.25.1, und das IP-Format in der Datenbank ist 202.011.025.001, was die erhaltene IP erfordert.“
'Konvertieren Sie die Client-IP in das gleiche Format wie die IP in der Datenbank
„Da die IP, die wir derzeit verwenden, in 4 Segmente unterteilt ist, besteht jedes Segment aus 3 Ziffern, getrennt durch „.“
„Meine Idee ist also, die Client-IP mit dem Symbol „.“ in 4 Segmente zu unterteilen, also 202/11/25/1
„Überprüfen Sie dann jeden Absatz einzeln. Wenn er weniger als 3 Ziffern enthält, wird vor dem Absatz eine 1 hinzugefügt. Fügen Sie in ähnlicher Weise 2 hinzu 0er.
„Nachdem Sie die formatierte IP erhalten haben, entfernen Sie das letzte Segment der IP, das heißt, nehmen Sie die ersten 11 Ziffern einschließlich „.“, vergleichen Sie es mit den ersten 11 Ziffern des Startip-Felds in der Datenbank und finden Sie den gleichen Wert
„Weil aus der Datenbank ersichtlich ist, dass die ersten drei Segmente von startip und endip gleich sind und das letzte Segment nur die interne Subnetzadresse ist und entfernt werden kann.“
„Nehmen Sie also einfach die ersten 11 Ziffern eines beliebigen Startip- oder Endip-Felds und vergleichen Sie sie mit den ersten 11 Ziffern der Client-IP, um den richtigen Standort zu finden.“
'////////////////////////////////////////////// /// ///////////////
Funktion checkip_trueip()
„Ermitteln Sie die echte IP des Clients.“
getclientip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 'Wenn der Client einen Proxyserver verwendet, kann die Methode Request.ServerVariables("REMOTE_ADDR") nur einen Nullwert erhalten, dann sollte die Methode ServerVariables("HTTP_X_FORWARDED_FOR") verwendet werden
Wenn getclientip = "" Dann
getclientip = Request.ServerVariables("REMOTE_ADDR")'Wenn der Client keinen Proxy verwendet, erhält Request.ServerVariables("HTTP_X_FORWARDED_FOR") einen Nullwert und die Methode Request.ServerVariables("REMOTE_ADDR") sollte verwendet werden
Ende wenn
checkip_trueip = getclientip
Endfunktion
'////////////////////////////////////////////// /// ////////
Funktion getaccessrecordset(db,sql,mark,read)'Recordset-Objekt abrufen
set conn=getaccessconn(db)'Die Eingabeparameter sind der relative Pfad der Datenbank, die SQL-SQL-Anweisung, mark, read sind Datenbanklesemethoden, 1,1 sind schreibgeschützt, 1,3 sind Lese-/Schreibmethoden
'constr="Provider=microsoft.jet.oledb.4.0;"&"data Source="&Server.MapPath(db)
' conn.open constr
set getaccessrecordset=server.CreateObject("ADODB.Recordset")
getaccessrecordset.open sql,conn,mark,read
Funktion beenden
'////////////////////////////////////////////// /// ///////////
Funktion getaccessconn(db)'Holen Sie sich das Verbindungsobjekt
set getaccessconn=server.CreateObject("ADODB.Connection")
'constr="DRIVER={MICROSOFT ACCESS DRIVER (*.MDB)};DBQ="&SERVER.MAPPATH("allcon/#bbsall.mdb")
constr="Provider=microsoft.jet.oledb.4.0;"&"data Source="&Server.MapPath(db)
getaccessconn.open constr
Endfunktion
'////////////////////////////////////////////// /// ///////////
dim getip
'getip=(trim(request.ServerVariables("REMOTE_ADDR")))'IP vom Client abrufen
'getip=(trim(request.QueryString("comes"))) 'Geben Sie die IP selbst zum Testen ein
'response.Write(getip&"<br>")
'////////////////////////////////////////////// /// ///////////
function checkip_locations(checkstring) 'Gibt die Standortfunktion des Trennzeichens in IP zurück
checkip_locations=Instr(checkstring,".") 'Weisen Sie der Funktion den Wert des Standorts zu
Endfunktion
'////////////////////////////////////////////// /// ///////////
„Die folgende Funktion besteht darin, IP zu teilen und nach jeder Teilung die verbleibende IP-Zeichenfolge auf der rechten Seite des „.“-Symbols zu erhalten
Funktion checkip_left(checkstring)
location_left=checkip_locations(checkstring) 'Ermitteln Sie den Ort, an dem „.“ zum ersten Mal in der verbleibenden IP-Zeichenfolge erscheint
iplength_left=Len(checkstring) 'Ermitteln Sie die Länge des verbleibenden Strings der IP
Divide_locations_left=iplength_left-locations_left 'Ermitteln Sie die Position, an der „.“ zuerst in der verbleibenden IP-Zeichenfolge erscheint, und wie viele Ziffern es von rechts nach links gibt
ipstr_left=Right(checkstring,divide_locations_left) 'Ruft die verbleibende IP-Zeichenfolge auf der rechten Seite des „.“-Symbols nach dieser Teilung ab
checkip_left=ipstr_left 'Weisen Sie der Funktion die oben erhaltene Zeichenfolge zu
Endfunktion
'////////////////////////////////////////////// /// //////////
„Die folgende Funktion besteht darin, die IP aufzuteilen und nach jeder Aufteilung die IP-Zeichenfolge links vom „.“-Symbol zu erhalten. Das heißt, die IP wird in vier Segmente unterteilt, und die Zeichenfolgenfunktion jedes Segments
lautet checkip_right(checkstring).
location_right=checkip_locations(checkstring) 'Ermitteln Sie den Ort, an dem „.“ zum ersten Mal in der IP erscheint
iplength_right=Len(checkstring) 'Ruft die IP-String-Länge ab
Divide_locations_right=iplength_right-locations_right 'Ermitteln Sie die Position, an der „.“ zuerst in der verbleibenden IP-Zeichenfolge erscheint, und wie viele Ziffern es von rechts nach links gibt
ipstr11=Trim(Replace(Left(checkstring,locations_right),".","")) 'Entferne das „.“-Symbol aus der Zeichenfolge links vom erhaltenen „.“
„Wenn die IP in 4 Segmente unterteilt ist und jedes Segment weniger als 3 Ziffern umfasst, fügen Sie 0 hinzu.“
if Len(ipstr11)="2" then ipstr11="0"&ipstr11
wenn Len(ipstr11)="3" dann ipstr11=ipstr11
wenn Len(ipstr11)="1" dann ipstr11="00"&ipstr11
checkip_right=ipstr11 'Holen Sie sich die Zeichenfolge vor dem „.“-Symbol, also eines der vier Segmente nach der Aufteilung der IP in vier Segmente.
Endfunktion
'///////////////////////////////////////////////////////////////////////////////// /// //////////
'Überprüfen Sie, ob es sich bei der IP um eine interne Netzwerk-IP handelt
„Das Urteil, das ich geschrieben habe, basiert auf: 127.0.0.0-127.XXX.XXX.255 und 192.0.0.0-192.XXX.XXX.255. Wenn es diese beiden sind, ist es die interne Netzwerk-IP, andernfalls ist es die externes Netzwerk.
„Ich kenne die Grundlage für die Beurteilung interner geistigen Eigentumsrechte nicht, daher brauche ich Experten, die mir Ratschläge geben und Korrekturen vornehmen. Kontaktieren Sie mich.“
Funktion checkiplocal(checkstring)
dimm re1
set re1=new RegExp 'Reguläres Ausdrucksobjekt abrufen
Der Ausdruck in „re1.pattern“ lautet, dass die IP des internen Netzwerks mit 127 oder 192 beginnen sollte und die Mitte aus beliebigen 1-3 Zahlen von 0-9 plus „“ bestehen sollte, um einen Absatz zu bilden
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=false
re1.Ignorecase=false
checkiplocal=re1.test(checkstring)
setze re1=nichts
Endfunktion
'////////////////////////////////////////////// /// ///////////////////////
Funktion checkip_remote(checkstring)
dim iplength 'Die Länge des IP-Strings
dim positions '"."Der Ort, an dem das Zeichen erscheint
iplength=Len(checksting)
location=Instr(checkstring,".") 'Rufen Sie die Position ab, an der das „.“-Symbol zum ersten Mal in der IP-Zeichenfolge erscheint, von links nach rechts
'Teilen Sie die IP in 4 Segmente mit den Zeichen „.“ auf
location2=iplength-locations
ipstring1=Left(checkstring,locations)
ipstring2=Right(checkstring,locations2)
Endfunktion
'////////////////////////////////////////////// /// ////////
'////////////////////////////////////////////// /// ////////
ipinfo_local="Ihre IP ist eine Intranet-IP!"
ipinfo_remote="Externe Netzwerk-IP!"
getip=checkip_trueip()
currentip=checkiplocal(getip) 'Rufen Sie die Funktion checkiplocal() auf, um die erhaltene IP zu überprüfen und festzustellen, ob es sich um eine interne Netzwerkadresse oder eine externe Netzwerkadresse handelt
'if currentip=true then' Testcode
'response.Write(ipinfo_local)
Wenn currentip=true, dann ist 'false'
„response.Write(ipinfo_local)“ gibt die interne Netzwerk-IP an
anders
'Konvertieren
„Das Folgende ist eine Schleifenextraktion und Bitfüllung mit 0, um die IP in 4 Segmente zu unterteilen.“
location=checkip_locations(getip)'Ermitteln Sie den Ort, an dem „.“ zum ersten Mal in der IP vorkommt, bevor die erste Teilung erfolgt
iplength=Len(getip) 'Ermitteln Sie die Länge der Client-IP
divid_locations=iplength-locations 'Ermitteln Sie den Standort der Client-IP, gezählt von rechts nach links bis zum ersten „.“ der IP, gezählt von links nach rechts.
ipstr1=Trim(Replace(Left(getip,locations),".",""))
ipstr2=Right(getip,divide_locations)'Ruft den verbleibenden Wert auf der rechten Seite des Clients nach der ersten Teilung ab
„Wenn die IP in 4 Segmente unterteilt ist und jedes Segment weniger als 3 Ziffern umfasst, fügen Sie 0 hinzu.“
if Len(ipstr1)="2" then ipstr1="0"&ipstr1 'Die Länge beträgt zwei, weniger als drei, fügen Sie vor der Zeichenfolge eine 0 hinzu
if Len(ipstr1)="3" then ipstr1=ipstr1 'Gemäß der obigen Analogie
if Len(ipstr1)="1" then ipstr1="00"&ipstr1 'Der ipstr1 ist zu diesem Zeitpunkt das erste Segment von IP
ipstr12=checkip_right(ipstr2) 'Der ipstr12 ist zu diesem Zeitpunkt das zweite Segment der IP
ipstr122=checkip_left(ipstr2)
ipstr13=checkip_right(ipstr122) 'Der ipstr13 ist derzeit das dritte Segment der IP
ipstr14=checkip_left(ipstr122) 'Der ipstr14 ist derzeit das vierte Segment von IP
if Len(ipstr14)="1" then ipstr14="00"&ipstr14 'Füge 0 zum vierten Segment der erhaltenen IP hinzu. Dieser Schritt ist nicht erforderlich
wenn Len(ipstr14)="2" dann ipstr14="0"&ipstr14
wenn Len(ipstr14)="3" dann ipstr14=ipstr14
'response.write ipstr1&"<br>" 'Schreiben Sie den Wert jedes Segments nach der IP-Segmentierung
'response.write ipstr12&"<br>"
'response.write ipstr13&"<br>"
'response.write ipstr14
allip=ipstr1&"."&ipstr12&"."&ipstr13&"."&ipstr14
Finishgetip=left(allip,11)
ipaddr,iplocal,sqls dimmen
„Mit der folgenden SQL-Anweisung wird ermittelt, ob der linke 11-Bit-Wert des Startip-Felds gleich dem linken 11-Bit-Wert der Client-IP ist.“
sqls="SELECT country_state,areauser FROM ip WHERE Left(startip,11)='"&finishgetip&"'"
set rs=getaccessrecordset("#worldip.mdb",sqls,"1","1") 'Abfragewert abrufen
if rs.eof then 'Wenn kein Wert gefunden wird, der der Client-IP entspricht
showip=checkip_trueip() 'Weisen Sie showip die Client-IP zu
ipaddr="Unbekannte Region" 'Land oder Provinz
iplocal="Unbekannter Ort" 'Bestimmter Ort
anders
showip=checkip_trueip()
ipaddr=rs("country_state")
iplocal=rs("areauser")
Ende wenn
'response.write("Ihre IP ist: "&showip&" ")
'response.write("Sie kommen aus: "&ipaddr&" ")
'response.write("Sie sind:"&iplocal)
rs.close
setze rs=nichts
%>
<%="Ihre IP ist:"&showip&" "%>
<%="Sie kommen aus:"&ipaddr&" "%>
<%="Sie sind:"&iplocal&"<br>"%>
Sollte ein Fehler in der IP-Adresse vorliegen, kontaktieren Sie mich bitte oder laden Sie die Datenbank zur Korrektur herunter, vielen Dank! <br>
<table width="760" border="0" cellpacing="0" cellpadding="0">
<tr>
<td width="203"><a href="Script56.rar">Script56.CHM herunterladen</a>-->1,34M</td>
<td width="548">Einführung: Hilfedokumentation von Microsoft, einschließlich VBscript-Syntax, JScript-Syntax, reguläre Ausdrücke </td>
<td width="3"> </td>
<td width="6"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><a href="ipsearch.rar">Laden Sie das globale ASP-IP-Adresssuchprogramm herunter</a></td>
<td>ASP+ACCESS Größe 401K Format 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>Wenn Ihre IP unbekannt ist, geben Sie bei Bedarf bitte Ihren Standort ein:</td>
<td>
<form name="form1" method="post" action="postip.asp">
<table width="100%" border="1" cellpacing="0" cellpadding="0">
<tr>
<td width="21%"> Provinz: </td>
<td width="44%">
<input type="text" name="country_state">
</td>
<td width="35%"> </td>
</tr>
<tr>
<td width="21%">Bestimmter Standort oder Netzwerkbenutzer:</td>
<td width="44%">
<input type="text" name="areauser">
</td>
<td width="35%">Zum Beispiel: Benutzer der Beijing Tsinghua University oder Beijing Netcom</td>
</tr>
<tr>
<td width="21%"> </td>
<td width="44%">
<input type="hidden" name="startip" value="<%=finishgetip&.000"%>">
<input type="hidden" name="endip" value="<%=finishgetip&".255"%>">
</td>
<td width="35%"> </td>
</tr>
<tr>
<td width="21%"> </td>
<td width="44%">
<input type="submit" name="Submit" value="Submit">
</td>
<td width="35%"> </td>
</tr>
</table>
</form>
</td>
<td> </td>
<td> </td>
</tr>
</table>
<%
Ende wenn
%>
</body>
</html>
Demo-Adresse: http://www.knowsky.com/ip