Na maioria das vezes, o endereço IP de um visitante do site é usado para identificá-lo. Mas além disso, usando o IP, você pode obter muitas informações adicionais sobre o visitante - por exemplo, descobrir seu provedor de Internet e sua localização geográfica. Na prática, os scripts PHP do lado do servidor são usados com mais frequência para extrair endereços IP dos cabeçalhos de solicitação enviados pelo navegador.
É necessário
Conhecimento básico de PHP
Instruções
Passo 1
Use a função getenv embutida do PHP para ler endereços IP do array de variáveis de ambiente superglobal. No caso mais simples, será suficiente ler a variável chamada REMOTE_ADDR. A parte correspondente do código PHP pode ter a seguinte aparência: $ userIP = getenv ('REMOTE_ADDR');
Passo 2
Além da variável REMOTE_ADDR enviada na solicitação, verifique as variáveis HTTP_VIA e HTTP_X_FORWARDED_FOR. Se o visitante usar um servidor proxy, o endereço intermediário deve ser registrado em ambas as variáveis - em HTTP_VIA e REMOTE_ADDR. Neste caso, você pode tentar descobrir o IP real do visitante através de HTTP_X_FORWARDED_FOR - o servidor proxy deve colocar o endereço original nele. Porém, nem sempre isso é feito, e o usuário tem a oportunidade de selecionar um servidor proxy "opaco" que não transmite o IP original do visitante que enviou a solicitação. Em qualquer caso, você deve usar todas as maneiras possíveis para obter o endereço IP original em seu código, adicionando uma verificação para a variável
etapa 3
Concatene em uma linha de código PHP uma verificação sequencial de três variáveis de ambiente, que podem conter o endereço IP original do visitante. Isso pode ser feito, por exemplo, assim: $ userIP = getenv ('HTTP_CLIENT_IP') OR $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ userIP = getenv ('REMOTE_ADDR');
Passo 4
Remova caracteres extras e outros "lixo" do valor IP resultante que pode entrar nas variáveis de ambiente. Isso pode ser feito, por exemplo, usando as funções embutidas do PHP TRIM e preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
Etapa 5
Combine todo o código em uma função personalizada para que você possa consultá-lo em vez de repetir as linhas de verificação e limpeza indefinidamente em diferentes partes de seus scripts PHP. Por exemplo, assim: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') OU $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}