获取客户端 ip 地址

获取客户端IP地址

在nginx配置 fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;后打印$_SERVER后发现 HTTP_X_FORWARDED_FOR 是空的字符串

经过goole查询需要设置
$request->setTrustedProxies(array(‘10.32.0.1/16’));
$ip = $request->getClientIp();
发现获取到的是服务器的ip地址,服务器使用的homestead
在使用的setTrustedProxies这个方法的试试查询的都是一个参数,但是实际使用的时候这个方法需要两个参数,
$request->setTrustedProxies([$request->ip()],$request::HTTP_X_FORWARDED_FOR);
$ip = $request->getClientIps();
报错Undefined class constant HTTP_X_FORWARDED_FOR
请教各位大神如何正确的获取客户端IP

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5

file
试试看可以吗

3年前 评论

网上抄来的

    /**
     * 获取用户真实 ip
     * @return array|false|mixed|string
     */
    private function getClientIp()
    {
        if (getenv('HTTP_CLIENT_IP')) {
            $ip = getenv('HTTP_CLIENT_IP');
        }
        if (getenv('HTTP_X_REAL_IP')) {
            $ip = getenv('HTTP_X_REAL_IP');
        } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
            $ips = explode(',', $ip);
            $ip = $ips[0];
        } elseif (getenv('REMOTE_ADDR')) {
            $ip = getenv('REMOTE_ADDR');
        } else {
            $ip = '0.0.0.0';
        }

        return $ip;
    }
3年前 评论

laravel 5.5 开始,用这个方法配置可信代理 请求《Laravel 5.5 中文文档》

3年前 评论

@839891627 不知道是否和前后端分离的问题,在本地无法获取,上传到服务器上就可以了

3年前 评论

直接一个$request->ip() 就可以直接获取得嘛。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!