Laravel 4 Laravel 4的GeoIP仅显示示例数据

Laravel 4 Laravel 4的GeoIP仅显示示例数据,laravel-4,geoip,Laravel 4,Geoip,我已经用Laravel 4安装了GeoIP。我已经下载了MaxMind mmdb数据文件,并按照说明将其放置在app/database/MaxMind中 下面是我的基本代码,但它总是显示示例数据,而不是实际值 $loc = GeoIP::getLocation(); print_r($loc); 每次我拿回来这个: Array ( [ip] => ::1 [isoCode] => US [country] => United States [city] => New H

我已经用Laravel 4安装了GeoIP。我已经下载了MaxMind mmdb数据文件,并按照说明将其放置在app/database/MaxMind中

下面是我的基本代码,但它总是显示示例数据,而不是实际值

$loc = GeoIP::getLocation();
print_r($loc);
每次我拿回来这个:

Array ( [ip] => ::1 [isoCode] => US [country] => United States [city] => New Haven [state] => CT [postal_code] => 06510 [lat] => 41.31 [lon] => -72.92 [timezone] => America/New_York [continent] => NA [default] => 1 )
我没有对配置文件做任何更改,它仍然是这样的:

return array(

  // Service (only maxmind so far)
  'service' => 'maxmind',

  'maxmind' => array(
    'type'          => 'database', // database or web_service
    'user_id'       => '',
    'license_key'   => ''
  )
);
getLocation方法要求您传递一个IP地址,它将返回该IP的位置详细信息。例如,使用此属于Google的IP地址:

GeoIP::getLocation('64.233.191.128');
您将获得以下数据:

array(
  "ip"          => "64.233.191.128"
  "isoCode"     => "US"
  "country"     => "United States"
  "city"        => "Mountain View"
  "state"       => "CA"
  "postal_code" => 94043
  "lat"         => 37.4192
  "lon"         => -122.0574
  "default"     => false
)
笔记
在本地服务器上进行测试时,在没有IP的情况下调用GeoIP::getLocation将不起作用,因为本地IP不是公共的。

Bogdan为我解决了这个问题-在将模板移动到模型中并通过控制器传递之前,我正在模板中进行快速测试。一旦我搬了它,事情开始起作用了

仅使用 GeoIP::getLocation; 在我的本地服务器上不起作用,所以我现在要做的是测试:

$ip  = '173.234.149.140';  //la
$loc = \GeoIP::getLocation($ip);
一旦在实时服务器上,我应该能够从客户端获得实际的IP。最终,我将拉长和拉长,从我自己的存储位置数据库中查找最近的存储位置,然后使用Haversine mySQL公式查找最近的存储位置,如下所示:

$lat = $loc['lat'];
$lng = $loc['lon'];
$results = \DB::select( \DB::raw("SELECT  id, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ) AS distance FROM locations HAVING distance < 500 ORDER BY distance LIMIT 0 , 20;"));

根据文档,听起来只使用GeoIP::GetLocation将“获取网站访问者的位置数据”——因此我认为您不必向其传递IP。当我尝试使用GeoIP::getLocation'64.233.191.128'-和一个IP地址,即使是那个地址,也没有响应,也没有错误。奇怪的是,它甚至没有在同一个php脚本分隔符内完成任何其他代码。您是否在本地计算机上测试过这一点?我正在使用XAMPwell在本地计算机上测试,这是您的问题,localhost或127.0.0.1无法返回任何有效数据,因为它不是公共IP地址,这就是GeoIP在没有IP地址的情况下试图获取数据的IP。但是如果我提供IP地址,它应该可以工作,不是吗?如果使用GeoIP::getLocation'64.233.191.128';例如即使在本地运行?它在本地主机上运行吗??或者需要一台实时服务器来运行此代码?没有理由不这样做。