Como capturar o endereço IP do cliente utilizando PHP

Autor: Archzilon Eshun-Davies
Fonte: phpclasses.org

Exemplo Funcionando: Aqui

Este tutorial é composto apenas por uma classe que de forma bem simples detecta o IP do cliente que está acessando o script.

A classe pode também verificar a variável super-global pedido do servidor para ver se o usuário está acessando o site usando um proxy.
Caso esteja, ele retorna o endereço IP de usuário original exposto pelo servidor proxy.
Caso contrário, a classe retorna o endereço IP remoto atual conectando ao servidor HTTP.

Arquivo: cIP.php

<?php

    # Set to true if you want to test the class
    $TEST = false;

    interface iIP {
        public static function getusrip();
    }

    class cIP implements iIP {

        /**
         * Returns User IP Address
         * @params
         *        IN:  NONE
         *        OUT: ip address(0.0.0.0)
         */
        public static function getusrip() {
            $ip = null;
            if ((isset($_SERVER['HTTP_X_FORWARDED_FOR'])) &&
                    (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))) {
                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
            }
            elseif ((isset($_SERVER['HTTP_CLIENT_IP'])) &&
                    (!empty($_SERVER['HTTP_CLIENT_IP']))) {
                $ip = explode(".", $_SERVER['HTTP_CLIENT_IP']);
                $ip = "{$ip[3]}.{$ip[2]}.{$ip[1]}.{$ip[0]}";
            }
            elseif ((!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) &&
                    (empty($_SERVER['HTTP_X_FORWARDED_FOR'])) &&
                    (!isset($_SERVER['HTTP_CLIENT_IP'])) &&
                    (empty($_SERVER['HTTP_CLIENT_IP'])) &&
                    (isset($_SERVER['REMOTE_ADDR']))) {
                $ip = ($_SERVER['REMOTE_ADDR']);
            }
            else {
                // ip is null
            }
            return ($ip);
        }

    }

    if ($TEST) {
        $ip = cIP::getusrip();
        print "IP Capturado: $ip";
        exit();
    }
?>

Para testar a classe, basta alterar a variável “$TEST = false;” para “$TEST = true;”.

Até (:

Share Button