好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Rails 如何实现通过登录IP确定城市功能

Rails 如何实现通过登录IP确定城市功能

Rails 如何实现通过登录IP确定城市功能

Rails 如何实现通过登录IP确定城市功能 博客分类: RubyOnRails

Rails Ruby Git Google XML



对于Rails而言,主流方式应该是使用google库的插件geoip
github地址如下

Ruby代码  

require  'geoip'    GeoIP. new ( 'GeoLiteCity.dat' ).country( 'HdhCmsTestatlantis.sk' )   => [ "HdhCmsTestatlantis.sk" ,  "217.67.18.26" ,  "SK" ,  "SVK" ,  "Slovakia" ,  "EU" ,  "02" ,  "Bratislava" ,  "" , 48.15, 17.1167,  nil ,  nil ,  "Europe/Bratislava" ]      Returned values are the requested hostname, the IP address as a dotted quad,   Maxmind's country code, the ISO3166-1 country code, the ISO3166-2 country code,   the ISO3166 country name,  and  the continent code.      GeoIP. new ( 'GeoCity.dat' ).city( 'github测试数据' )   => [ "github测试数据" ,  "207.97.227.239" ,  "US" ,  "USA" ,  "United States" ,  "NA" ,  "CA" ,  "San Francisco" ,  "94110" , 37.7484, -122.4156, 807, 415,  "America/Los_Angeles" ]      Returned values are the country values followed by region  or  state name,   city name, postal_code/zipcode, latitude, longitude, USA DMA code, USA area code,   timezone name. Sorry it's  not  a  Hash ... historical.      GeoIP. new ( 'GeoIPASNum.dat' ).asn( "HdhCmsTestfsb.ru" )   => [ "AS8342" ,  "RTComm.RU Autonomous System" ]  



另外一个 geo_ip

使用如下:

Ruby代码  

GeoIp.geolocation(ip_address)  



Ruby代码  

   # 209.85.227.104 = google.be (US)      GeoIp.geolocation( '209.85.227.104' )   #returns:         {        :status            => "OK" ,        :ip                => "209.85.227.104"         :country_code      => "US" ,        :country_name      => "United States" ,        :region_code       => "06" ,        :region_name       => "California" ,        :city              => "Mountain View" ,        :zip_postal_code   => "94043" ,        :latitude          => "37.4192" ,        :longitude         => "-122.057"      }  



geokit 是一个关于地理的工具,比如根据经纬度确定城市和距离之类

Ruby代码  

#Find near latitude and longitude:    Store.find( :all ,  :origin  =>[37.792,-122.393],  :within =>10)   #Find near an address:    Store.find( :all ,  :origin => '100 Spear st, San Francisco, CA' ,  :within =>10)   #Order by distance from the center of a zipcode:    Store.find( :all ,  :origin => '94117' ,  :within =>10,               :order => 'distance asc' )   #Combine distance conditions with regular conditions    Store.find( :all ,  :origin => '94117' ,  :within =>10,                :conditions =>{ :store_type => 'CAFE' })  




一个是通过网络的IP查询API,这个办法IP库更新比较快。通用的库有几个比如google。
xml处理页面完全可以通过nokogiri等专门处理工具代替

提供IP地址查询的API很多比如网易
http://HdhCmsTestyoudao测试数据/smartresult-xml/search.s?type=ip&q=IP地址

Ruby代码  

require  'net/http'    require  'rexml/document'    include REXML      class  MapsController < ApplicationController        def  index            @location  = locateIp()            end            def  locateIp            #ip = "123.123.123.123";            ip = request.remote_ip           ips = ip.to_s           url =  "http://ipinfodb测试数据/ip_query.php?ip=" +ips+ "&timezone=false"               xml_data = Net::HTTP.get_response(URI.parse(url)).body                      xmldoc = REXML::Document. new (xml_data)               # Now get the root element            root = xmldoc.root           city =  ""            regionName =  ""            countryName =  ""                # This will take country name...            xmldoc.elements. each ( "Response/CountryName" ) {           |e| countryName << e.text                }               # Now get city name...            xmldoc.elements. each ( "Response/City" ) {           |e| city << e.text               }               # This will take regionName...            xmldoc.elements. each ( "Response/RegionName" ) {           |e| regionName << e.text               }                     ipLocation = city + ", " +regionName+ ", " +countryName                      return  ipLocation               end    #end of method locateIp       end   

分享到:

mac安装rmagic | Nokogiri 中文乱码的几种情况

01:17 评论 / 浏览 (2 / 466) 分类: 编程语言 相关推荐

评论

2 楼 fireflyman 2010-11-04  

1 楼 qichunren 2010-08-25  

支持! 




查看更多关于Rails 如何实现通过登录IP确定城市功能的详细内容...

  阅读:42次

上一篇: liststyle

下一篇:新浪登录 功能实现