46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* Author: cfn <cfn@leapy.cn>
|
|
*/
|
|
|
|
namespace App\Utils;
|
|
|
|
use Hyperf\Context\ApplicationContext;
|
|
use Hyperf\HttpServer\Contract\RequestInterface;
|
|
use Psr\Container\ContainerExceptionInterface;
|
|
use Psr\Container\NotFoundExceptionInterface;
|
|
|
|
class Ip
|
|
{
|
|
/**
|
|
* Author: cfn <cfn@leapy.cn>
|
|
* @return string
|
|
*/
|
|
public static function ip(): string
|
|
{
|
|
$container = ApplicationContext::getContainer();
|
|
$request = $container->get(RequestInterface::class);
|
|
$res = $request->getHeaders();
|
|
if (isset($res['http_client_ip'])) {
|
|
return $res['http_client_ip'][0];
|
|
} elseif (isset($res['x-real-ip'])) {
|
|
return $res['x-real-ip'][0];
|
|
} elseif (isset($res['x-forwarded-for'])) {
|
|
return $res['x-forwarded-for'][0];
|
|
} else {
|
|
$serverParams = $request->getServerParams();
|
|
return $serverParams['remote_addr'][0];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Author: cfn <cfn@leapy.cn>
|
|
* @return string
|
|
*/
|
|
public static function ua(): string
|
|
{
|
|
$container = ApplicationContext::getContainer();
|
|
$request = $container->get(RequestInterface::class);
|
|
return $request->header("user-agent", "unknown");
|
|
}
|
|
} |