Files
hospital-applets-api/app/Utils/Http.php
T
2023-02-17 17:10:16 +08:00

33 lines
829 B
PHP

<?php
namespace App\Utils;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\Di\Annotation\Inject;
class Http
{
#[Inject]
protected RequestInterface $request;
/**
* 获取客户端ip地址
* @return string
*/
public function getIp():string
{
$res = $this->request->getServerParams();
if (isset($res['http_client_ip'])) {
return $res['http_client_ip'];
} elseif (isset($res['http_x_real_ip'])) {
return $res['http_x_real_ip'];
} elseif (isset($res['http_x_forwarded_for'])) {
//部分CDN会获取多层代理IP,所以转成数组取第一个值
$arr = explode(',', $res['http_x_forwarded_for']);
return $arr[0];
} else {
return $res['remote_addr'];
}
}
}