根據IP地址查找我們的IP地址所在地,這個最簡單辦法就是直接把ip在百度搜索就可以知道你的IP地址所在地了,但對于一些網站我們不能使用此方法,但可以通過api來實現.
例子,利用第三方接口實例,代碼如下:
- <form action="" method="post">
- <p>請輸入ip地址:<input type="text" name="ip" /></p>
- <p><input type="submit" value="查詢" /></p>
- </form>
- <?php
- //獲取ip地址
- //$ip = $_SERVER['REMOTE_ADDR']; //自動獲取客戶端的IP
- //ip對應的地區
- if(!emptyempty($_POST['ip'])){
- $ip = $_POST['ip'];
- //接口地址,這樣返回的是一個xml結果集,
- $str = file_get_contents("http://www.yodao.com/smartresult-xml/search.s?type=ip&q=".$ip);
- //這里要得到里面的地址信息,提取xml方法有很多,我用的是正則。
- preg_match_all( "/<location>(.*?)</location>/",$str,$addr1);
- //最終結果,如圖2;
- $addr = $ip."=>".$addr1[1][0];
- echo $addr;
- }
- ?>
例子,利用QQWry,目前只支持PHP5版本.
安裝:
1.sudo pecl install qqwry-beta或者直接下載編譯,phpize && ./configure && make && sudo make install
2.編輯php.ini,加入extension=qqwry.so
3.重啟http server
使用很簡單,首先就是實例化,傳入純真數據庫的文件路徑,然後調用q方法,該方法返回一個數組,第一個值為地址1,例如南寧市,第二個值為地址2,例如邕 寧區電信ADSL,看到子吧,一目了然。,下面的iconv是把數據從GB2312轉到UTF-8,如果你的站點是用GB2312,那么這一步是不需要的,代碼如下:
- $qqwry=new qqwry('QQWry.Dat');
- list($addr1,$addr2)=$qqwry->q('127.0.0.1');
- $addr1=iconv('GB2312','UTF-8',$addr1);
- $addr2=iconv('GB2312','UTF-8',$addr2);
- echo $addr1,'|',$addr2," ";
- $arr=$qqwry->q('222.216.47.4');
- $arr[0]=iconv('GB2312','UTF-8',$arr[0]);
- $arr[1]=iconv('GB2312','UTF-8',$arr[1]);
- echo $arr[0],'|',$arr[1]," ";
- $arr=$qqwry->q('64.233.187.99');
- $arr[0]=iconv('GB2312','UTF-8',$arr[0]);
- $arr[1]=iconv('GB2312','UTF-8',$arr[1]);
- echo $arr[0],'|',$arr[1]," ";
- //輸出:
- //本機地址|
- //廣西南寧市|(青秀區)電信ADSL
- //美國|加利福尼亞州Google公司
例子,如果你只要查查IP地址就不需相面那么復雜了,如我在百度輸入 110.110.110.110
顯示地址為,IP地址:110.110.110.110黑龍江省哈爾濱市 鐵通
新聞熱點
疑難解答