Laravel - 获取客户端IP地址 - 始终获得127.0.0.1结果

时间:2016-12-22 15:16:11

标签: laravel ip guzzle

我无法获取确定其当前位置所需的客户端IP地址。

我使用了request-> ip(),$ _SERVER ['REMOTE_ADDR'],我总是得到127.0.0.1的结果,这不是我想要的。

我做错了什么?

5 个答案:

答案 0 :(得分:4)

frame将为您提供客户端IP。您正在获取request->ip(),因为您尝试从同一台计算机访问本地项目。

答案 1 :(得分:3)

有时您的客户通过代理使用您的应用程序,因此您不应该依赖$ _SERVER ['REMOTE_ADDR']。

查看此链接(对证券有点关注):
How to get the client IP address in PHP?

答案 2 :(得分:0)

我找到了一种解决方法。但是请注意,在生产之前必须进行更改!

阅读此部分:https://laravel.com/docs/5.7/requests#configuring-trusted-proxies

现在只需添加:

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array
     */
    protected $proxies = '*';

现在request()-> ip()为您提供正确的ip

答案 3 :(得分:0)

您可以尝试以下方法:

function get_ip() {
    $keys = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR');

    foreach ($keys as $key) {
        if (array_key_exists($key, $_SERVER) === true) {
            foreach (explode(',', $_SERVER[$key]) as $ip) {
                if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                    return $ip;
                }
            }
        }
    }
}

答案 4 :(得分:-2)

此代码($_SERVER['REMOTE_ADDR'])的在线项目中有客户端IP地址,它将成功运行。它会尝试..

相关问题