場景:
根據ip位址判斷使用者所在地,雖然網上有好多篇了,但我記錄乙個一看就懂的,不用看超長文字再自己理解了。
上海: 202.127.0.0 ~ 202.127.4.255
北京: 122.200.64.0 ~ 122.207.255.255
此時如果使用者的ip位址為122.202.2.0,我們就能根據這個表知道他的位址位於北京。
方法:
使用有序集合記錄這個表,每個城市儲存兩條資料,一條是城市名對應的分數為最大ip位址。另一條是「#」加上城市名對應的分數為最小ip位址。
分析:
取大於當前ip的最近的上乙個分數值,如果值是#開頭,說明是某乙個城市的最小ip,就是當前ip不在任何城市範圍內,如果不是#開頭,那ip就屬於這個城市。
|----上海最大ip(80=>sh)|----上海最小ip(50=>#
sh)|----北京最大ip(30=>bj)
|----北京最小ip(20=>#
bj)
**實現:
//先用ip2long把ip位址轉為對應的十進位制數,這裡為了方便直接使用虛擬數字表示
$redis->zadd('zset', 20, '#bj'); //
最小ip加#
$redis->zadd('zset', 30, 'bj');
$redis->zadd('zset', 50, '#sh'); //
最小ip加#
$redis->zadd('zset', 80, 'sh');
//獲取ip對應的城市
$cityip = 34;
$b = $redis->zrangebyscore('zset', $cityip, '+inf', array( 'limit'=>array(0,1) ));
if ($b
) else
} else
IP位址查詢
coding utf 8 ip 61.158.147.194 import urllib,urllib2,cookielib,sys,cjson reload sys sys.setdefaultencoding utf 8 url 定義介面位址,限制10qps headers headers ok...
IP位址查詢
coding utf 8 ip 61.158.147.194 import urllib,urllib2,cookielib,sys,cjson reload sys sys.setdefaultencoding utf 8 url 定義介面位址,限制10qps headers headers ok...
IP位址分類及對應範圍
ip位址由四段組成,每個欄位是乙個位元組,即4個位元組 每個位元組有8位,最大值是255 全世界範圍是唯一的 32 位 4個位元組 8位 的識別符號。ip位址由兩部分組成,即網路位址和主機位址,二者是主從關係 1.網路號 net id,它標誌主機 或路由器 所連線到的網路,網路位址表示其屬於網際網路...