php获取ip的地址位置--GeoIP扩展

2021-03-23

可以通过IP地址来确定地理位置。比如城市、州、国家、经度、纬度以及其他信息,比如ISP (因特网服务提供商)和网络连接类型。
要求系统安装了GeoIP C语言库的1.4.0及以上版本(默认情况下只能使用免费的GeoIP Country或者GeoLite City的数据库,其他类型的数据库需要购买商业许可);http://www.maxmind.com/app/c
扩展地址:https://pecl.php.net/package/geoip

配置

默认为空,但是可以设置一个不同的数据库来覆盖该扩展自带的数据库

geoip.custom_directory

函数

获取ip所在洲

// 获取主机或ip地址$hostname所在的七大洲大写字母简称,未找到返回false
geoip_continent_code_by_name($hostname);

获取ip所在国家

// 获取主机或ip地址$hostname所在的国家代码,未找到返回false 
geoip_country_code_by_name($hostname);

// 获取主机或ip地址$hostname所在的国家代码的三个字母,未找到返回false 
geoip_country_code3_by_name($hostname);

// 获取主机或ip地址$hostname所在的国家名全称,未找到返回false 
geoip_country_name_by_name($hostname);

获取ip网络类型

// 获取主机名或ip地址$hostname的网络连接类型
geoip_id_by_name($hostname);

商业授权允许获取数据

获取网络信息

// 获取主机或ip地址$hostname所归属的网络服务提供商(ISP)的名称
geoip_isp_by_name($hostname);

// 获取主机或ip地址$hostname对应的网络连接类型和速度
geoip_netspeedcell_by_name($hostname);

// 获取主机或ip地址$hostname所分配的机构名称
geoip_org_by_name($hostname);

获取域名信息

// 获取主机或ip地址$hostname相关联的二级域名
geoip_domain_by_name($hostname);

获取国家信息

// 获取主机或ip地址$hostname相关的国家和地区代码数组
geoip_region_by_name($hostname);
[
    'country_code' => '两个字母组成的国家代码',
    'region'       => '地区代码',
]

// 获取主机或ip地址$hostname所对应的记录信息数组
geoip_record_by_name($hostname);
[
    'continent_code' => '两个字符组成的洲简称',
    'country_code'   => '两个字母组成的国家简称',
    'country_code3'  => '三个字母组成的国家简称',
    'country_name'   => '国家名称',
    'region'         => '地区代码',
    'city'           => '城市名称',
    'postal_code'    => '邮编,FSA或者Zip编码',
    'latitude'       => '有符号的双精度纬度',
    'longitude'      => '有符号的双精度经度',
    'dma_code'       => '指定市场区号(只支持美国和加拿大)',
    'area_code'      => 'PSTN地区代码(公共交换电话网络)',
]

 

{/if}