*/ namespace App\Utils; use Hyperf\Context\ApplicationContext; use Hyperf\HttpServer\Contract\RequestInterface; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; class Ip { /** * Author: cfn * @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 * @return string */ public static function ua(): string { $container = ApplicationContext::getContainer(); $request = $container->get(RequestInterface::class); return $request->header("user-agent", "unknown"); } }