How to get client IP address in Laravel 5+

前端 未结 18 2736
你的背包
你的背包 2020-11-27 11:11

I am trying to get the client\'s IP address in Laravel.

It is easy to get a client\'s IP in PHP by using $_SERVER[\"REMOTE_ADDR\"]. It is working fine

18条回答
  •  感动是毒
    2020-11-27 12:12

    Solution 1: You can use this type of function for getting client IP

    public function getClientIPaddress(Request $request) {
        $clientIp = $request->ip();
        return $clientIp;
    }
    

    Solution 2: if the solution1 is not providing accurate IP then you can use this function for getting visitor real IP.

     public function getClientIPaddress(Request $request) {
    
        if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
            $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
            $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        }
        $client  = @$_SERVER['HTTP_CLIENT_IP'];
        $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
        $remote  = $_SERVER['REMOTE_ADDR'];
    
        if(filter_var($client, FILTER_VALIDATE_IP)){
            $clientIp = $client;
        }
        elseif(filter_var($forward, FILTER_VALIDATE_IP)){
            $clientIp = $forward;
        }
        else{
            $clientIp = $remote;
        }
    
        return $clientIp;
     }
    

    N.B: When you have used load-balancer/proxy-server in your live server then you need to used solution 2 for getting real visitor ip.

提交回复
热议问题