laravel获取IP地址的真实地理位置

国内:
composer require "zhuzhichao/ip-location-zh"
Ip::find('171.12.10.156') //指定ip查询
Ip::find(Request::getClientIp()) //来自客户访问

// 返回结果
array (size=4)
  0 => string '中国' (length=6)
  1 => string '河南' (length=6)
  2 => string '郑州' (length=6)
  3 => string '' (length=0)
  4 => string '410100' (length=6)
 
转json例子
return json_encode(Ip::find('8.8.8.8'));
输出:
["GOOGLE.COM","GOOGLE.COM","","",""]

国外:
composer require torann/geoip

编辑.env
修改CACHE_DRIVER=file为CACHE_DRIVER=array

编辑config/app.php
'providers' => [

    \Torann\GeoIP\GeoIPServiceProvider::class, //添加

]

'aliases' => [

    'GeoIP' => \Torann\GeoIP\Facades\GeoIP::class, //添加

];

执行
php artisan vendor:publish --provider="Torann\GeoIP\GeoIPServiceProvider" --tag=config

执行
php artisan geoip:update

例子:
getLocation(geoip()->getClientIP());
geoip()->getLocation('8.8.8.8');

使用var_dump()输出
object(Torann\GeoIP\Location)#330 (1) { ["attributes":protected]=> array(13) { ["ip"]=> string(7) "8.8.8.8" ["iso_code"]=> string(2) "US" ["country"]=> string(13) "United States" ["city"]=> string(7) "Ashburn" ["state"]=> string(2) "VA" ["state_name"]=> string(8) "Virginia" ["postal_code"]=> string(5) "20149" ["lat"]=> float(39.03) ["lon"]=> float(-77.5) ["timezone"]=> string(16) "America/New_York" ["continent"]=> string(2) "NA" ["currency"]=> string(3) "USD" ["default"]=> bool(false) } }

转json例子
    $json = geoip()->getLocation('8.8.8.8');
    return [
        'ip' => $json->ip,
        'iso_code' => $json->iso_code,
        'country' => $json->country,
        'city' => $json->city,
        'state' => $json->state,
        'state_name' => $json->state_name,
        'postal_code' => $json->postal_code,
        'lat' => $json->lat,
        'lon' => $json->lon,
        'timezone' => $json->timezone,
        'continent' => $json->continent,
    ];
输出:
{"ip":"8.8.8.8","iso_code":"US","country":"United States","city":"Ashburn","state":"VA","state_name":"Virginia","postal_code":"20149","lat":39.03,"lon":-77.5,"timezone":"America\/New_York","continent":"NA"}

©著作权归作者所有:来自51CTO博客作者风云晓海的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 20210508 字符串的格式化输出
  2. jQuery中的DOM操作实现留言板功能、$get、 $post、 ajax跨域
  3. 210426 PHP 输出方法,数据类型,变量,作用域,常量
  4. 在 Delphi 中使用微软全文翻译的小例子
  5. PHP:使用定界符输出九格宫表格,颜色各异,每个小格子宽高50px ,用
  6. Tomcat控制台日志输出到本地文件
  7. 冷月手撕408之操作系统(23)-输入输出管理IO的控制方式
  8. JavaScript遍历对象方法总结
  9. 键盘输入10 个数,输出最大值和最小值及其对应下标

随机推荐

  1. Android Handler机制10之Native的实现
  2. Android 编译系统
  3. android HAL知识
  4. android的图片添加、滚动条、单选框、多
  5. 最全的Android单元测试教程
  6. Android中的签名机制
  7. android string.xml %问题
  8. Android的文本系列的控件
  9. Android TextView内容过长加省略号
  10. Android抽屉实现