<?php // Por Marcos Regis $ip = (isset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:'unknown'); // pegando o endere�o remoto ou definindo-o como desconhecido $forward = ( isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:false); // pegando o endere�o que foi repassado (se houver) $ip=( ($ip=='unknown' && $foward && $forward!='unknown' )?$forward:$ip); // verifica se existe um redirecionado e o retorna, caso contr�rio mant�m o remoto. /* Ob.: As vezes, alguns IPs s�o mascarados ou simplesmente s�o passados como ocultos e n�o � poss�vel ter fidelidade das informa��es. Este script � �til nos casos de que temos um servidor WEB fora da empresa e precisamos identificar de qual m�quina partiu a requisi��o. Supomos que poss�imos em nossa empres uma rede interna com 10 micros e estes est�o utilizando acesso a Internet atrav�s do servidor proxy. Embora cada um tenha um IP diferente dentro da empresa (geralmente classe C) o $_SERVER['REMOTE_ADDR'] retornar� o IP do Proxy ou do router que estiver fazendo o NAT e n�o ser� poss�vel saber de qual micro partiu a requisi��o. $_SERVER['HTTP_X_FORWARDED_FOR'] ir� retornar o IP que foi redirecionado (nulo se n�o houver). Outro fator � a existencia de um firewall no ip externo que redireciona para o IP interno dando um Forward e alterando o valor do IP. Isso faz com que REMOTE_ADDR tenha o ip do seu firewall ao inv�s do ip do cliente. Para estes casos deve-se alterar a linha $ip = (isset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:'unknown'); para $ip = (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']!='IP DO FIREWALL'?$_SERVER['REMOTE_ADDR']:'unknown'); Espero que seja �til