เอามาแปะไว้หน่อย พอดีเอาไปใช้กับเว็บ ลงประกาศฟรี นิดหน่อยครับ ที่เช็คเฉพาะประเทศไทย ก็เพราะว่า แค่อยากรู้เฉยๆว่า ใช่ ip จากไทย หรือไม่ ไม่ได้อยากรู้ ip ทั้งโลก ว่าอยู่ประเทศไหน ซึ่งอันนี้จะมีแจกอยู่เยอะครับ บทความนี้ ผมเลยขอเขียนเฉพาะวิธีตรวจสอบเฉพาะไทย (ที่จริงก็ เอาของคนอื่นมา ที่มาอยู่ด้านล่างครับ ^^ )
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; }
ให้เข้าไปที่เว็บ www.countryipblocks.net เพื่อเอา list ip ของประเทศไทยมา โดยเลือกเป็น CIDR Format มาเก็บไว้ในไฟล์ iplist.txt วางไว้ตำแหน่งเดียวกับ .php
ตอนเรียกใช้ก็
ipfilter('IP Address ที่ต้องการตรวจสอบ');
ถ้าตรงกับฐานข้อมูล จะ return ค่า 1 ออกมา
เพิ่มเติม http://php.net/manual/en/function.ip2long.php