可以通过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地区代码(公共交换电话网络)',
]