< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<html>
<หัว>
<title>เอกสารที่ไม่มีชื่อ</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</หัว>
<ร่างกาย>
-
เคล็ดลับเสร็จสิ้นสลัว, showip, allip
'///////////////////////////////////////////////////' ////////////
'โปรแกรมยังไม่มีประสิทธิภาพมากนักและจะได้รับการแก้ไขในภายหลัง
'ฐานข้อมูลที่ใช้โดยโปรแกรมนี้คือ - "Feng Zhihong" - เขียนโดย - "Punt" - ฐานข้อมูล IP ที่รวมอยู่ในซอฟต์แวร์และ
'Global IP Address Allocation Table.chm' ที่เขียนโดยผู้เขียน "Guohua Soft" - "Feng Guohua" - ถูกรวมเข้าเป็นหนึ่งเดียว
'ขอขอบคุณ "Feng Zhihong" และ "Feng Guohua" ที่ให้ข้อมูล
'ยังมีที่อยู่ IP ที่ซ้ำกันจำนวนมากในฐานข้อมูล ฉันหวังว่าจะมีคนสามารถลบมันและลดขนาดของฐานข้อมูลได้
'รายการของฉันยังงุ่มง่ามมาก ฉันหวังว่าทุกคนจะสามารถแสดงความคิดเห็นและสื่อสารได้มากขึ้น ขอบคุณ!
'///////////////////////////////////////////////////' /// /////////////
'วิธีแก้ปัญหา: www.downcodes.com '
'IP ไคลเอนต์ที่ได้รับมักจะเป็น 202.11.25.1 และรูปแบบ IP ในฐานข้อมูลคือ 202.011.025.001 ซึ่งจำเป็นต้องได้รับ
'แปลง IP ไคลเอนต์เป็นรูปแบบเดียวกับ IP ในฐานข้อมูล
'เนื่องจาก IP ที่เราใช้อยู่ในปัจจุบันแบ่งออกเป็น 4 ส่วน แต่ละส่วนจะมี 3 หลัก คั่นด้วย "."
'ดังนั้น ความคิดของฉันคือการแบ่ง IP ไคลเอนต์ออกเป็น 4 ส่วนด้วยสัญลักษณ์ "." นั่นคือ 202/11/25/1
'จากนั้นตรวจสอบแต่ละย่อหน้า หากเป็น 3 หลัก ก็จะไม่เปลี่ยนแปลง หากน้อยกว่า 3 หลัก จะเป็น 2 หลัก 0 วินาที
'หลังจากได้รับ IP ที่จัดรูปแบบแล้ว ให้ลบส่วนสุดท้ายของ IP ออก นั่นคือนำตัวเลข 11 หลักแรกที่มี "." มาเปรียบเทียบกับตัวเลข 11 หลักแรกของช่องเริ่มต้นในฐานข้อมูล แล้วค้นหาค่าเดียวกัน
'เนื่องจากสามารถเห็นได้จากฐานข้อมูลว่าสามส่วนแรกของ startip และ endip เหมือนกัน และส่วนสุดท้ายเป็นเพียงที่อยู่เครือข่ายย่อยภายในและสามารถลบออกได้
'ดังนั้นเพียงนำตัวเลข 11 หลักแรกของฟิลด์ startip หรือ endip มาเปรียบเทียบกับ 11 หลักแรกของ IP ไคลเอนต์เพื่อค้นหาตำแหน่งที่ถูกต้อง
'///////////////////////////////////////////////////' /////////////////////
ฟังก์ชั่น checkip_trueip()
'รับ IP ที่แท้จริงของไคลเอนต์
getclientip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 'หากไคลเอนต์ใช้พร็อกซีเซิร์ฟเวอร์ เมธอด Request.ServerVariables("REMOTE_ADDR") สามารถรับได้เฉพาะค่า null เท่านั้น ดังนั้นเมธอด ServerVariables("HTTP_X_FORWARDED_FOR") ควรถูกใช้
ถ้า getclientip = "" แล้ว
getclientip = Request.ServerVariables("REMOTE_ADDR")'หากไคลเอ็นต์ไม่ได้ใช้พร็อกซี Request.ServerVariables("HTTP_X_FORWARDED_FOR") จะได้รับค่า null และควรใช้เมธอด Request.ServerVariables("REMOTE_ADDR")
สิ้นสุดถ้า
checkip_trueip = getclientip
ฟังก์ชั่นสิ้นสุด
'///////////////////////////////////////////////////' ////////////
ฟังก์ชั่น getaccessrecordset (db, sql, ทำเครื่องหมาย, อ่าน) 'รับวัตถุ Recordset
set conn=getaccessconn(db)'พารามิเตอร์อินพุตเป็นพาธสัมพัทธ์ของฐานข้อมูล db, คำสั่ง sql-SQL, เครื่องหมาย, read คือวิธีการอ่านฐานข้อมูล, 1,1 เป็นแบบอ่านอย่างเดียว, 1,3 เป็นแบบอ่าน-เขียน
'constr="Provider=microsoft.jet.oledb.4.0;"&"แหล่งข้อมูล="&Server.MapPath(db)
' conn.เปิด constr
ตั้งค่า getaccessrecordset=server.CreateObject("ADODB.Recordset")
getaccessrecordset.open sql, conn, ทำเครื่องหมาย, อ่าน
สิ้นสุดฟังก์ชัน
'///////////////////////////////////////////////////' ///////////////
ฟังก์ชั่น getaccessconn (db) 'รับวัตถุการเชื่อมต่อ
ตั้งค่า getaccessconn=server.CreateObject("ADODB.Connection")
'constr="DRIVER={ไดรเวอร์การเข้าถึง MICROSOFT (*.MDB)};DBQ="&SERVER.MAPPATH("allcon/#bbsall.mdb")
constr = "ผู้ให้บริการ = microsoft.jet.oledb.4.0;"&"แหล่งข้อมูล = "&Server.MapPath(db)
getaccessconn.open constr
ฟังก์ชั่นสิ้นสุด
'///////////////////////////////////////////////////' ///////////////
เก็ทติปสลัว
'getip=(trim(request.ServerVariables("REMOTE_ADDR")))'รับ IP จากไคลเอนต์
'getip=(trim(request.QueryString("comes"))) 'ป้อน IP ด้วยตัวเองเพื่อทดสอบ
'response.Write(getip&"<br>")
'///////////////////////////////////////////////////' ///////////////
function checkip_locations(checkstring) 'ส่งคืนฟังก์ชันระบุตำแหน่งของอักขระตัวคั่นใน IP
checkip_locations=Instr(checkstring,".") 'กำหนดค่าของตำแหน่งให้กับฟังก์ชัน
ฟังก์ชั่นสิ้นสุด
'///////////////////////////////////////////////////' ///////////////
'ฟังก์ชันต่อไปนี้คือการแยก IP และรับสตริง IP ที่เหลือทางด้านขวาของสัญลักษณ์ "." หลังจากแยกแต่ละครั้ง
ฟังก์ชั่น checkip_left (สายตรวจสอบ)
Locations_left=checkip_locations(checkstring) 'รับตำแหน่งที่ "." ปรากฏครั้งแรกในสตริงที่เหลือของ IP
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 'กำหนดสตริงที่ได้รับด้านบนให้กับฟังก์ชัน
ฟังก์ชั่นสิ้นสุด
'///////////////////////////////////////////////////' /// /////////////
'ฟังก์ชันต่อไปนี้คือการแยก IP และรับสตริง IP ทางด้านซ้ายของสัญลักษณ์ "." หลังจากแยกแต่ละครั้ง นั่นคือ IP แบ่งออกเป็นสี่ส่วน และฟังก์ชันสตริงของแต่ละส่วน
คือ checkip_right(checkstring)
Locations_right=checkip_locations(checkstring) 'รับตำแหน่งที่ "." ปรากฏครั้งแรกใน IP
iplength_right=Len(checkstring) 'รับความยาวสตริง IP
divide_locations_right=iplength_right-locations_right 'รับตำแหน่งที่ "." ปรากฏครั้งแรกในสตริงที่เหลือของ IP มีกี่หลักจากขวาไปซ้าย
ipstr11=Trim(Replace(Left(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 ถูกแบ่งออกเป็นสี่ส่วน
สิ้นสุดฟังก์ชัน
'//////////////////////////////////////////////// /// /////////////
'ตรวจสอบว่า IP เป็น IP เครือข่ายภายในหรือไม่
'คำตัดสินที่ฉันเขียนนั้นขึ้นอยู่กับ: 127.0.0.0-127.XXX.XXX.255 และ 192.0.0.0-192.XXX.XXX.255 หากเป็นสองสิ่งนี้ จะเป็น IP เครือข่ายภายใน ไม่เช่นนั้นจะเป็น เครือข่ายภายนอก
'ฉันไม่รู้ว่าพื้นฐานในการตัดสิน IP ภายในคืออะไร ดังนั้นฉันจึงต้องการผู้เชี่ยวชาญเพื่อให้คำแนะนำและทำการแก้ไขให้ฉัน
ฟังก์ชั่น checkiplocal (สายตรวจสอบ)
สลัว re1
set re1=new RegExp 'รับวัตถุนิพจน์ทั่วไป'
นิพจน์ใน 're1.pattern คือ IP ของเครือข่ายภายในควรเริ่มต้นด้วย 127 หรือ 192 และตรงกลางควรเป็นตัวเลข 1-3 ตัวตั้งแต่ 0-9 บวก ""
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.ละเว้นกรณี=เท็จ
checkiplocal=re1.test (สายตรวจสอบ)
ตั้ง re1=ไม่มีอะไร
ฟังก์ชั่นสิ้นสุด
'///////////////////////////////////////////////////' ///////////////////////////
ฟังก์ชั่น checkip_remote (สายตรวจสอบ)
dim iplength 'ความยาวของสตริง IP
ตำแหน่งสลัว '""ตำแหน่งที่ตัวละครปรากฏ
iplength=Len(ตรวจสอบ)
Location=Instr(checkstring,".") 'ดึงตำแหน่งที่สัญลักษณ์ "." ปรากฏขึ้นครั้งแรกในสตริง IP จากซ้ายไปขวา
'แบ่ง IP ออกเป็น 4 ส่วนด้วยอักขระ "."
location2=iplength-สถานที่
ipstring1=ซ้าย(สตริงตรวจสอบ,ตำแหน่ง)
ipstring2=ขวา(สตริงตรวจสอบ,locations2)
ฟังก์ชั่นสิ้นสุด
'///////////////////////////////////////////////////' ////////////
'///////////////////////////////////////////////////' ////////////
ipinfo_local="IP ของคุณคือ IP อินทราเน็ต!"
ipinfo_remote="IP เครือข่ายภายนอก!"
getip=checkip_trueip()
currentip=checkiplocal(getip) 'เรียกใช้ฟังก์ชัน checkiplocal() เพื่อตรวจสอบ IP ที่ได้รับเพื่อดูว่าเป็นที่อยู่เครือข่ายภายในหรือที่อยู่เครือข่ายภายนอก
'ถ้า currentip=true ดังนั้น' โค้ดทดสอบ
'response.Write (ipinfo_local)
ถ้า currentip=true แสดงว่า 'เป็นเท็จ
response.Write(ipinfo_local)' ระบุ IP เครือข่ายภายใน
อื่น
'แปลง
'ต่อไปนี้เป็นการแยกลูปและการเติมบิตด้วย 0 เพื่อแบ่ง IP ออกเป็น 4 ส่วน
Location=checkip_locations(getip)'รับตำแหน่งที่ "." ปรากฏครั้งแรกใน IP ก่อนการแยกครั้งแรก
iplength=Len(getip) 'รับความยาวของ IP ไคลเอนต์
divide_locations=iplength-locations 'รับตำแหน่งของ IP ไคลเอนต์นับจากขวาไปซ้ายไปตัวแรก "." ของ IP นับจากซ้ายไปขวา
ipstr1=Trim(แทนที่(ซ้าย(getip,สถานที่),".",""))
ipstr2=Right(getip,divide_locations)'รับค่าที่เหลือทางด้านขวาของไคลเอ็นต์หลังจากการแยกครั้งแรก
'หาก IP แบ่งออกเป็น 4 ส่วนและแต่ละส่วนน้อยกว่า 3 หลัก ให้บวก 0
ถ้า Len(ipstr1)="2" แล้ว ipstr1="0"&ipstr1 'ความยาวคือสอง น้อยกว่าสาม ให้เติม 0 ก่อนสตริง
ถ้า Len(ipstr1)="3" ดังนั้น ipstr1=ipstr1 'ตามการเปรียบเทียบข้างต้น
ถ้า Len(ipstr1)="1" ดังนั้น ipstr1="00"&ipstr1 'ipstr1 ในเวลานี้เป็นส่วนแรกของ IP
ipstr12=checkip_right(ipstr2) 'ipstr12 ในขณะนี้เป็นส่วนที่สองของ IP
ipstr122=checkip_left(ipstr2)
ipstr13=checkip_right(ipstr122) 'ipstr13 ในขณะนี้คือส่วนที่สามของ IP
ipstr14=checkip_left(ipstr122) 'ipstr14 ในขณะนี้คือส่วนที่สี่ของ IP
ถ้า Len(ipstr14)="1" ดังนั้น ipstr14="00"&ipstr14 'เพิ่ม 0 ไปยังส่วนที่สี่ของ IP ที่ได้รับ ขั้นตอนนี้ไม่จำเป็น
ถ้า Len(ipstr14)="2" แล้ว ipstr14="0"&ipstr14
ถ้า Len(ipstr14)="3" ดังนั้น ipstr14=ipstr14
'response.write ipstr1&"<br>" 'เขียนค่าของแต่ละส่วนหลังการแบ่งส่วน IP
'response.write ipstr12&"<br>"
'response.write ipstr13&"<br>"
'response.write ipstr14.'
allip=ipstr1&""&ipstr12&""&ipstr13&""&ipstr14
finishgetip=ซ้าย(allip,11)
หรี่ ipaddr, ilocal, sqls
'คำสั่ง SQL ต่อไปนี้คือการแยกว่าค่า 11 บิตด้านซ้ายของฟิลด์ startip เท่ากับค่า 11 บิตด้านซ้ายของ IP ไคลเอ็นต์หรือไม่
sqls = "เลือกประเทศ_รัฐ, พื้นที่ผู้ใช้จาก ip ที่เหลือ (เคล็ดลับเริ่มต้น, 11) ='"&finishgetip&"'"
set rs=getaccessrecordset("#worldip.mdb",sqls,"1", "1") 'รับค่าแบบสอบถาม
ถ้า rs.eof แล้ว 'ถ้าไม่พบค่าเท่ากับ IP ไคลเอนต์
showip=checkip_trueip() 'กำหนด IP ไคลเอนต์ให้กับ showip
ipaddr="ไม่ทราบภูมิภาค" 'ประเทศหรือจังหวัด
iplocal="ไม่ทราบตำแหน่ง" 'สถานที่เฉพาะ
อื่น
showip=checkip_trueip()
ipaddr=rs("ประเทศ_รัฐ")
iplocal=rs("พื้นที่")
สิ้นสุดถ้า
'response.write("IP ของคุณคือ: "&showip&" ")
'response.write("คุณมาจาก: "&ipaddr&" ")
'response.write("คุณคือ:"&iplocal)
฿.ปิด
ตั้งค่า rs=nothing
-
<%="IP ของคุณคือ:"&showip&" "%>
<%="คุณมาจาก:"&ipaddr&" "%>
<%="คุณคือ:"&iplocal&"<br>"%>
หากมีข้อผิดพลาดในที่อยู่ IP โปรดติดต่อฉันหรือดาวน์โหลดฐานข้อมูลเพื่อแก้ไข ขอบคุณ! <br>
<table width="760" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="203"><a href="Script56.rar">ดาวน์โหลด Script56.CHM</a>-->1.34M</td>
<td width="548">บทนำ: เอกสารวิธีใช้ของ Microsoft รวมถึงไวยากรณ์ VBscript, ไวยากรณ์ JScript, นิพจน์ทั่วไป </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">ดาวน์โหลดโปรแกรมค้นหาที่อยู่ IP ทั่วโลกของ ASP</a></td>
<td>ASP+ACCESS ขนาด 401K; รูปแบบ 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>หากไม่ทราบ IP ของคุณ โปรดส่งตำแหน่งของคุณหากคุณต้องการ:</td>
<td>
<ชื่อแบบฟอร์ม = "form1" วิธีการ = "โพสต์" การกระทำ = "postip.asp">
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="21%"> จังหวัด: </td>
<td width="44%">
<ประเภทอินพุต = "ข้อความ" ชื่อ = "country_state">
</td>
<td width="35%"> </td>
</tr>
<tr>
<td width="21%">ตำแหน่งเฉพาะหรือผู้ใช้เครือข่าย:</td>
<td width="44%">
<ประเภทอินพุต = "ข้อความ" ชื่อ = "areauser">
</td>
<td width="35%">ตัวอย่างเช่น: ผู้ใช้ Beijing Tsinghua University หรือ 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>
</ตาราง>
</แบบฟอร์ม>
</td>
<td> </td>
<td> </td>
</tr>
</ตาราง>
-
สิ้นสุดถ้า
-
</ร่างกาย>
</html>
ที่อยู่สาธิต: http://www.knowsky.com/ip