وأنا أتصفح بالانترنت كنت أبحث عن رنجات الايبيهات السعودية
فـ فكرت بأن آخذها من سكريبت المتواجدين حالياً اللي يظهر بالمتواجدين هم من أي دولة
أي أن السكريبت لابد أنه عنده رنجات معينه لايبيهات الدول يعرف منها الزائر قادم من أي دولة
لكن يوم فكيت الهاك ولاحظت زراعة قاعدة البيانات بالنسبة لرينجات السعودية كانت كالتالي :
كود:
INSERT INTO ips VALUES (2790719488,'sa');
INSERT INTO ips VALUES (2809069568,'sa');
INSERT INTO ips VALUES (3234587392,'sa');
INSERT INTO ips VALUES (3237690624,'sa');
INSERT INTO ips VALUES (3288400640,'sa');
INSERT INTO ips VALUES (3288401408,'sa');
INSERT INTO ips VALUES (3288416256,'sa');
INSERT INTO ips VALUES (3288547840,'sa');
INSERT INTO ips VALUES (3289325568,'sa');
INSERT INTO ips VALUES (3322609664,'sa');
INSERT INTO ips VALUES (3324256256,'sa');
INSERT INTO ips VALUES (3325234176,'sa');
INSERT INTO ips VALUES (1040384000,'sa');
INSERT INTO ips VALUES (1049968640,'sa');
INSERT INTO ips VALUES (1357922304,'sa');
INSERT INTO ips VALUES (1358684160,'sa');
INSERT INTO ips VALUES (3279945728,'sa');
INSERT INTO ips VALUES (3556958208,'sa');
INSERT INTO ips VALUES (3557531648,'sa');
INSERT INTO ips VALUES (3557597184,'sa');
INSERT INTO ips VALUES (3558400000,'sa');
INSERT INTO ips VALUES (3558473728,'sa');
INSERT INTO ips VALUES (3558973440,'sa');
INSERT INTO ips VALUES (3559792640,'sa');
INSERT INTO ips VALUES (3559825408,'sa');
INSERT INTO ips VALUES (3560857600,'sa');
INSERT INTO ips VALUES (3560996864,'sa');
INSERT INTO ips VALUES (3561365504,'sa');
INSERT INTO ips VALUES (3561431040,'sa');
INSERT INTO ips VALUES (3561766912,'sa');
INSERT INTO ips VALUES (3562905600,'sa');
INSERT INTO ips VALUES (3563372544,'sa');
INSERT INTO ips VALUES (3563454464,'sa');
INSERT INTO ips VALUES (3563806720,'sa');
INSERT INTO ips VALUES (3564421120,'sa');
INSERT INTO ips VALUES (3564527616,'sa');
INSERT INTO ips VALUES (3564584960,'sa');
INSERT INTO ips VALUES (3565813760,'sa');
INSERT INTO ips VALUES (3567419392,'sa');
INSERT INTO ips VALUES (3582509056,'sa');
INSERT INTO ips VALUES (3584368640,'sa');
INSERT INTO ips VALUES (3584458752,'sa');
INSERT INTO ips VALUES (3585449984,'sa');
INSERT INTO ips VALUES (3585646592,'sa');
INSERT INTO ips VALUES (3587358720,'sa');
INSERT INTO ips VALUES (3588620288,'sa');
INSERT INTO ips VALUES (3589144576,'sa');
INSERT INTO ips VALUES (3641196544,'sa');
للاسف ليست الخوارزمية هذه معي الان لكن من خلال السكربت المرفق هو يستخدم دالة تعمل مباشرة من قاعدة البيانات تقوم بعمل الخوارزمية لتحويل الip الي القيمة الرقمية للاي بي
وهي دالة INET_ATON()
وهذا وصفها بالانجليزية من موقع Mysql
INET_ATON() Return the numeric value of an IP address
P address (IPV4) is divided into 4 sub-blocks. Each sub-block has a different weight number each powered by 256.
Beginning IP number and Ending IP Number are calcuated as follows:
IP Number = 16777216*w + 65536*x + 256*y + z
where IP Address = w.x.y.z PHP Function To Convert IP Address to IP Number
-----------------------------------------------
function Dot2LongIP ($IPaddr)
{
if ($IPaddr == "") {
return 0;
} else {
$ips = split ("\.", "$IPaddr");
return ($ips[3] + $ips[2] * 256 + $ips[1] * 65536 + $ips[0]
*16777216); }
}
ASP Function To Convert IP Address to IP Number
-----------------------------------------------
Function Dot2LongIP (ByVal DottedIP)
Dim i, pos
Dim PrevPos, num
If DottedIP = "" Then
Dot2LongIP = 0
Else
For i = 1 To 4
pos = InStr(PrevPos + 1, DottedIP, ".", 1)
If i = 4 Then
pos = Len(DottedIP) + 1
End If
num = Int(Mid(DottedIP, PrevPos + 1, pos - PrevPos - 1))
PrevPos = pos
Dot2LongIP = ((num Mod 256) * (256 ^ (4 - i))) + Dot2LongIP
Next
End If
End Function
هذه دالة لتحويل عنوان الاي بي الي متغير رقمي او العكس
يتم مقارنة المتغير الرقمي هذا مع النطاقات المتوفرة في قاعدة البيانات والتي تحدد الدولة
فمثلا 2790719488 تابع للسعودية
ويتم ذلك بمقارنة الاي بي الحقيقي للزائر مع ناتج تحويل المتغير الرقمي او القيمة الرقمية المتوفرة الي اي بي فاذا كانت الاي بي للزائر اقل من هذه الاي بي الناتجة كان من هذه الدولة