HOW to get visitor IP behind Cloudfare or Proxy

Normally we would use $_SERVER[‘REMOTE_ADDR’] but unfortunately, this doesn’t work with Cloudflare. This small PHP function will let you get the visitor’s real IP address, even if you use Cloudflare or if they’re hiding behind a proxy

function getUserIP() {
    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 ) ) {
        $ip = $client;
    } elseif ( filter_var( $forward, FILTER_VALIDATE_IP ) ) {
        $ip = $forward;
    } else {
        $ip = $remote;
    }

    return $ip;
}
Scroll to Top