0210 | ฟังก์ชั่น PHP ตรวจสอบ IP Address ของประเทศไทย

เอามาแปะไว้หน่อย พอดีเอาไปใช้กับเว็บ ลงประกาศฟรี นิดหน่อยครับ ที่เช็คเฉพาะประเทศไทย ก็เพราะว่า แค่อยากรู้เฉยๆว่า ใช่ ip จากไทย หรือไม่ ไม่ได้อยากรู้ ip ทั้งโลก ว่าอยู่ประเทศไหน ซึ่งอันนี้จะมีแจกอยู่เยอะครับ บทความนี้ ผมเลยขอเขียนเฉพาะวิธีตรวจสอบเฉพาะไทย (ที่จริงก็ เอาของคนอื่นมา ที่มาอยู่ด้านล่างครับ ^^ )

[code lang=”php”]
function myip2long($ip) {
if (is_numeric($ip)) {
return sprintf("%u", floatval($ip));
} else {
return sprintf("%u", floatval(ip2long($ip)));
}
}

function ipfilter($ip) {
$match = 0;
$ip_addr = decbin(myip2long($ip));

if (fopen(dirname(__FILE__)."/iplist.txt", "r")) {
$source = file(dirname(__FILE__)."/iplist.txt");

foreach ($source as $line) {
$network = explode("/", $line);
$net_addr = decbin(myip2long($network[0]));
$cidr = $network[1];

if (substr($net_addr, 0, $cidr) == substr($ip_addr, 0, $cidr)) {
$match = 1;
break;
}
}
}
return $match;
}
[/code]

ให้เข้าไปที่เว็บ www.countryipblocks.net เพื่อเอา list ip ของประเทศไทยมา โดยเลือกเป็น CIDR Format มาเก็บไว้ในไฟล์ iplist.txt วางไว้ตำแหน่งเดียวกับ .php

ตอนเรียกใช้ก็
[code lang=”php”]
ipfilter(‘IP Address ที่ต้องการตรวจสอบ’);
[/code]
ถ้าตรงกับฐานข้อมูล จะ return ค่า 1 ออกมา

เพิ่มเติม http://php.net/manual/en/function.ip2long.php

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *