How to get client IP address in Laravel 5+

前端 未结 18 2613
你的背包
你的背包 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:10

    In Laravel 5.4 we can't call ip static. This a correct way to get the IP of the user:

     use Illuminate\Http\Request;
    
    public function contactUS(Request $request)
        {
            echo $request->ip();
            return view('page.contactUS');
        }
    
    0 讨论(0)
  • 2020-11-27 12:12

    You can get a few way ip address utilizing Request ip, Request getClientIp and solicitation partner work. In this model, I will tell you the best way to get current client ip address in laravel 5.8.

    $clientIP = request()->ip();
    
    dd($clientIP);
    

    You can follow this from here

    0 讨论(0)
  • 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.

    0 讨论(0)
  • 2020-11-27 12:14

    Add namespace

    use Request;
    

    Then call the function

    Request::ip();
    
    0 讨论(0)
  • 2020-11-27 12:14

    If you are still getting 127.0.0.1 as the IP, you need to add your "proxy", but be aware that you have to change it before going into production!

    Read "Configuring Trusted Proxies".

    And add this:

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

    Now request()->ip() gives you the correct IP.

    0 讨论(0)
  • 2020-11-27 12:15

    In Laravel 5

    public function index(Request $request) {
      $request->ip();
    }
    
    0 讨论(0)
提交回复
热议问题