获得IP
通过以下代码可获得客户端IP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| function getUserIpAddr(){ if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip = $_SERVER['HTTP_CLIENT_IP']; }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }else{ $ip = $_SERVER['REMOTE_ADDR']; } return $ip; }
echo 'User Real IP - '.getUserIpAddr();
|
然后外接api接口
通过composer获取下资源
1
| composer require zoujingli/ip2region
|
以下代码即可获取到了
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $ip2region = new Ip2Region();
$ip = '101.105.35.57';
$info = $ip2region->btreeSearch($ip);
var_dump($info);
|
调用纯真IP库
github地址
引入
1
| composer require 'itbdw/ip-database'
|
调用
1 2 3 4 5 6 7 8 9
| //根据实际情况,基本上用框架(如 Laravel)的话不需要手动引入 //require 'vendor/autoload.php';
use itbdw\Ip\IpLocation;
//支持自定义文件路径 $qqwry_filepath = '/abspath/qqwry.dat'; echo json_encode(IpLocation::getLocation($ip, $qqwry_filepath), JSON_UNESCAPED_UNICODE) . "\n"; echo json_encode(IpLocation::getLocation($ip), JSON_UNESCAPED_UNICODE) . "\n";
|
相应
1 2 3 4 5 6 7 8 9
| { "ip": "163.177.65.160", "country": "中国", "province": "广东", "city": "深圳市", "county": "", "isp": "联通", "area": "中国广东省深圳市腾讯计算机系统联通节点" }
|
测试
1 2
| php tests/ip.php -i 58.196.128.0
|
在线直接更新
1 2 3 4
| # 更新到源码目录 php ~/bin/update-ip.php
# 更新到指定目录 php ~/bin/update-ip.php -d /tmp
|
自己手动更新数据库
1,http://www.cz88.net/fox/ipdat.shtml 下载数据库程序(Windows 环境),执行完毕后,即可在程序安装目录找到数据库文件 qqwry.dat
2,复制到 src 目录,覆盖掉原文件即可;或者,把文件同步到服务器特定路径,但这种方式要求调用方法时传入 qqwry.dat 的绝对路径。