47 lines
1.1 KiB
PHP
47 lines
1.1 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
namespace Builder;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\HttpServer\Request;
|
|
class BaseRequest extends Request
|
|
{
|
|
/**
|
|
* BaseResponse
|
|
*/
|
|
#[Inject]
|
|
protected BaseResponse $response;
|
|
|
|
/**
|
|
* 获取请求IP
|
|
* @return string
|
|
*/
|
|
public function ip(): string
|
|
{
|
|
$ip = $this->getServerParams()['remote_addr'] ?? '0.0.0.0';
|
|
$headers = $this->getHeaders();
|
|
|
|
if (isset($headers['x-real-ip'])) {
|
|
$ip = $headers['x-real-ip'][0];
|
|
} else if (isset($headers['x-forwarded-for'])) {
|
|
$ip = $headers['x-forwarded-for'][0];
|
|
} else if (isset($headers['http_x_forwarded_for'])) {
|
|
$ip = $headers['http_x_forwarded_for'][0];
|
|
}
|
|
return $ip;
|
|
}
|
|
|
|
/**
|
|
* 获取协议架构
|
|
* @return string
|
|
*/
|
|
public function getScheme(): string
|
|
{
|
|
if (isset($this->getHeader('X-scheme')[0])) {
|
|
return $this->getHeader('X-scheme')[0].'://';
|
|
} else {
|
|
return 'http://';
|
|
}
|
|
}
|
|
}
|
|
|