Pelo endereço IP de um visitante do seu site, você pode descobrir muitas coisas sobre ele - país, cidade, nome e endereço de e-mail do provedor de Internet, etc. Mas o principal valor é que o IP pode servir como um ID de visitante para scripts do lado do servidor. Abaixo está descrito como você pode determinar o endereço IP usando PHP.
É necessário
Conhecimento básico de PHP
Instruções
Passo 1
Para extrair o endereço IP dos cabeçalhos enviados ao servidor de solicitação do navegador, use a função getenv. Ele lê os valores especificados a partir das variáveis de ambiente. Uma variável chamada REMOTE_ADDR é usada para armazenar o endereço IP do visitante. Porém, o cliente pode usar um servidor proxy, caso em que a variável conterá seu endereço, e não aquele que você deseja. Você pode descobrir que o internauta está usando um IP intermediário observando a variável de ambiente chamada HTTP_VIA. Todos os endereços dos servidores proxy envolvidos na cadeia são colocados nela, separados por vírgulas. Os servidores intermediários devem colocar o endereço do visitante em uma variável chamada HTTP_X_FORWARDED_FOR, mas isso depende inteiramente das configurações de proxy. Isso significa que para cobrir o máximo possível de possibilidades de determinação do endereço IP, você precisa verificar o conteúdo de pelo menos três variáveis: REMOTE_ADDR, HTTP_X_FORWARDED_FOR e, preferencialmente,
Passo 2
Você pode combinar a verificação de todas as três variáveis em uma linha de código PHP, por exemplo, assim:
$ ipAddr = getenv ('HTTP_CLIENT_IP') ou $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') ou $ ipAddr = getenv ('REMOTE_ADDR');
Tendo obtido o valor do endereço IP desta forma, é aconselhável limpá-lo de possíveis distorções e caracteres desnecessários. Você pode usar uma expressão regular para isso:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
etapa 3
Resta combinar as duas linhas de código em uma função:
function getIP () {
$ ipAddr = getenv ('HTTP_CLIENT_IP') ou $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') ou $ ipAddr = getenv ('REMOTE_ADDR');
return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}