hyperf-view/builder/MineRequest.php

58 lines
1.4 KiB
PHP

<?php
/**
* MineAdmin is committed to providing solutions for quickly building web applications
* Please view the LICENSE file that was distributed with this source code,
* For the full copyright and license information.
* Thank you very much for using MineAdmin.
*
* @Author X.Mo<root@imoi.cn>
* @Link https://gitee.com/xmo/MineAdmin
*/
declare(strict_types=1);
namespace Builder;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Request;
class MineRequest extends Request
{
/**
* MineResponse
*/
#[Inject]
protected MineResponse $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://';
}
}
}