利用 MySQL 內建函式將 IP 轉換成 int,範圍是 0 ~ 4294967295。
建立 table
CODE: [Copy to clipboard] CREATE TABLE `banned` ( `ip_start` int(10) NOT NULL default '0', `ip_end` int(10) NOT NULL default '0', ) TYPE=MyISAM COMMENT='禁止IP列表';
禁用一段IP,如 192.168.1.1 ~ 192.168.255.255
INSERT INTO `banned` (`ip_start`, `ip_end`) VALUES (INET_ATON( '192.168.1.1' ),INET_ATON( '192.168.255.255' ));
查詢 IP 是否被禁用:
$ip = '192.168.123.45'; $sql = "SELECT count(*) FROM `banned` WHERE ip_start >=INET_ATON('$ip') and ip_end <= INET_ATON('$ip') "; $result = mysql_query($sql); $banned = mysql_fetch_array($result); echo $banned[0] ? "禁止IP" : "通行IP" ;