< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<أتش تي أم أل>
<الرأس>
<title>مستند بدون عنوان</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</الرأس>
<الجسم>
<%
لمسة نهائية خافتة، نصيحة، شويب، أليب
'//////////////////////////////////////////////////////////////// /// ////////
"لم يتم تبسيط البرنامج بشكل كبير بعد وسيتم تعديله لاحقًا.
'قاعدة البيانات التي يستخدمها هذا البرنامج هي - "Feng Zhihong" - مكتوبة بواسطة - "Punt" - قاعدة بيانات IP المضمنة في البرنامج و
تم دمج "جدول تخصيص عنوان IP العالمي" الذي كتبه مؤلف "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 أرقام، فستكون رقمين. أضف 1 0 قبل الفقرة وستكون 1. وبالمثل، أضف 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") على قيمة فارغة فقط، ثم يجب استخدام طريقة ServerVariables("HTTP_X_FORWARDED_FOR")
إذا getclientip = "" ثم
getclientip = Request.ServerVariables("REMOTE_ADDR")'إذا كان العميل لا يستخدم وكيلاً، فسيحصل Request.ServerVariables("HTTP_X_FORWARDED_FOR") على قيمة فارغة، ويجب استخدام أسلوب Request.ServerVariables("REMOTE_ADDR")
نهاية إذا
checkip_trueip = getclientip
وظيفة النهاية
'//////////////////////////////////////////////////////////////// /// ////////
وظيفة getaccessrecordset(db,sql,mark,read)"الحصول على كائن مجموعة السجلات."
set conn=getaccessconn(db)'معلمات الإدخال هي المسار النسبي لقاعدة بيانات db، وبيان SQL-SQL، والعلامة، والقراءة هي طرق قراءة قاعدة البيانات، و1,1 للقراءة فقط، و1,3 للقراءة والكتابة
'constr="Provider=microsoft.jet.oledb.4.0;"&"مصدر البيانات = "&Server.MapPath(db)
' conn.open constr
تعيين getaccessrecordset=server.CreateObject("ADODB.Recordset")
getaccessrecordset.open sql,conn,mark,read
وظيفة النهاية
'//////////////////////////////////////////////////////////////// /// ///////////
وظيفة getaccessconn(db)"احصل على كائن الاتصال."
تعيين getaccessconn=server.CreateObject("ADODB.Connection")
'constr="DRIVER={MICROSOFT ACCESS DRIVER (*.MDB)};DBQ="&SERVER.MAPPATH("allcon/#bbsall.mdb")
constr = "Provider=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>")
'//////////////////////////////////////////////////////////////// /// ///////////
وظيفة checkip_locations(checkstring) 'ترجع وظيفة الموقع للحرف المحدد في IP
checkip_locations=Instr(checkstring,".") 'عيّن قيمة الموقع للوظيفة
وظيفة النهاية
'//////////////////////////////////////////////////////////////// /// ///////////
'الوظيفة التالية هي تقسيم IP والحصول على سلسلة IP المتبقية على الجانب الأيمن من الرمز "."
وظيفة checkip_left (سلسلة الاختيار)
sites_left=checkip_locations(checkstring) 'احصل على الموقع الذي يظهر فيه "." لأول مرة في السلسلة المتبقية من IP
iplength_left=Len(checkstring) 'احصل على طول السلسلة المتبقية من IP
Divid_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)
sites_right=checkip_locations(checkstring) 'احصل على الموقع الذي يظهر فيه "." لأول مرة في عنوان IP
iplength_right=Len(checkstring) 'احصل على طول سلسلة IP
Divid_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 للشبكة الداخلية، وإلا فهو شبكة خارجية.
"لا أعرف ما هو الأساس الذي يتم من خلاله الحكم على الملكية الفكرية الداخلية، لذا أحتاج إلى خبراء ليقدموا لي بعض النصائح ويقوموا بإجراء التصحيحات.
وظيفة 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.Ignorecase=false
checkiplocal=re1.test(سلسلة الاختيار)
تعيين re1 = لا شيء
وظيفة النهاية
'//////////////////////////////////////////////////////////////// /// ///////////////////////
وظيفة checkip_remote (سلسلة الاختيار)
dim iplength "طول سلسلة IP."
المواقع المعتمة'"."الموقع الذي تظهر فيه الشخصية
iplength=لين(فحص)
sites=Instr(checkstring,".") 'استرجاع الموضع الذي يظهر فيه الرمز "." لأول مرة في سلسلة IP من اليسار إلى اليمين
'قم بتقسيم عنوان IP إلى 4 أجزاء تحتوي على أحرف "."
sites2=iplength-locations
ipstring1=يسار(سلسلة الاختيار،المواقع)
ipstring2=يمين(checkstring,locations2)
وظيفة النهاية
'//////////////////////////////////////////////////////////////// /// ////////
'//////////////////////////////////////////////////////////////// /// ////////
ipinfo_local="عنوان IP الخاص بك هو عنوان IP للإنترانت!"
ipinfo_remote="عنوان IP للشبكة الخارجية!"
getip=checkip_trueip()
currentip=checkiplocal(getip) 'استدعاء وظيفة checkiplocal() للتحقق من عنوان IP الذي تم الحصول عليه لتحديد ما إذا كان عنوان شبكة داخلي أو عنوان شبكة خارجي
رمز الاختبار "إذا كان currentip = true إذن".
'response.Write(ipinfo_local)
إذا كان currentip = صحيحًا، فهذا يعني أن "خطأ".
Response.Write(ipinfo_local)' يشير إلى عنوان IP الداخلي للشبكة
آخر
'يتحول
'ما يلي هو استخراج الحلقة وملء البتات بالقيمة 0 لتقسيم IP إلى 4 أجزاء
sites=checkip_locations(getip)'احصل على الموقع الذي يظهر فيه "." لأول مرة في عنوان IP قبل التقسيم الأول
iplength=Len(getip) 'احصل على طول عنوان IP الخاص بالعميل
Divid_locations=iplength-locations 'احصل على موقع حساب IP الخاص بالعميل من اليمين إلى اليسار إلى أول "."
ipstr1=Trim(Replace(Left(getip,locations),".,""))
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=left(allip,11)
خافت ipaddr، ilocal، sqls
'عبارة SQL التالية هي استخراج ما إذا كانت قيمة 11 بت اليسرى لحقل البدء تساوي قيمة 11 بت اليسرى لعنوان IP الخاص بالعميل
sqls="SELECT Country_state,areauser FROM ip WHERE Left(startip,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("country_state")
iplocal=rs("منطقة المستخدم")
نهاية إذا
'response.write("عنوان IP الخاص بك هو: "&showip&" ")
'response.write("أنت من: "&ipaddr&" ")
'response.write("أنت:"&ilocal)
rs. Close
تعيين RS=لا شيء
%>
<%="عنوان IP الخاص بك هو:"&showip&" "%>
<%="أنت من:"&ipaddr&" "%>
<%="أنت:"&ilocal&"<br>"%>
إذا كان هناك خطأ في عنوان IP، يرجى الاتصال بي أو تنزيل قاعدة البيانات للتصحيح، شكرًا لك! <ر>
<عرض الجدول = "760" الحدود = "0" تباعد الخلايا = "0" خلية الحشو = "0">
<تر>
<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>
<تر>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<تر>
<td><a href="ipsearch.rar">تنزيل برنامج ASP العالمي للبحث عن عناوين IP</a></td>
<td>ASP+ACCESS الحجم 401 كيلو بايت بتنسيق rar</td>
<td> </td>
<td> </td>
</tr>
<تر>
<td> </td>
<td><font color="#000099"> </font> <font color="#0000FF"> </font></td>
<td> </td>
<td> </td>
</tr>
<تر>
<td>إذا كان عنوان IP الخاص بك غير معروف، فيرجى إرسال موقعك إذا كنت ترغب في ذلك:</td>
<TD>
<اسم النموذج = "form1" طريقة = "post" action = "postip.asp">
<عرض الجدول = "100%" الحدود = "1" تباعد الخلايا = "0" خلية الحشو = "0">
<تر>
<td width="21%"> المقاطعة: </td>
<عرض العرض = "44%">
<نوع الإدخال = "نص" اسم = "دولة_الدولة">
</TD>
<td width="35%"> </td>
</tr>
<تر>
<td width="21%">موقع محدد أو مستخدم شبكة محدد:</td>
<عرض العرض = "44%">
<نوع الإدخال = "نص" اسم = "منطقة المستخدم">
</TD>
<td width="35%">على سبيل المثال: مستخدمي جامعة بكين تسينغهوا أو مستخدمي بكين نتكوم</td>
</tr>
<تر>
<td width="21%"> </td>
<عرض العرض = "44%">
<input type="hidden" name="startip" value="<%=finishgetip&".000"%>">
<input type="hidden" name="endip" value="<%=finishgetip&".255"%>">
</TD>
<td width="35%"> </td>
</tr>
<تر>
<td width="21%"> </td>
<عرض العرض = "44%">
<نوع الإدخال = "إرسال" الاسم = "إرسال" القيمة = "إرسال">
</TD>
<td width="35%"> </td>
</tr>
</الجدول>
</النموذج>
</TD>
<td> </td>
<td> </td>
</tr>
</الجدول>
<%
نهاية إذا
%>
</الجسم>
</html>
العنوان التجريبي: http://www.knowsky.com/ip