เอามาแปะไว้หน่อย พอดีเอาไปใช้กับเว็บ ลงประกาศฟรี นิดหน่อยครับ ที่เช็คเฉพาะประเทศไทย ก็เพราะว่า แค่อยากรู้เฉยๆว่า ใช่ 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