Obtenha o endereço IP do usuário em PHP

Subodh Poudel 30 janeiro 2023
PHP
  1. Use $_SERVER['REMOTE_ADDR'] para encontrar o endereço IP do usuário em PHP
  2. Use $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] e $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar o endereço IP do usuário
  3. Use o operador ternário e a função isset() para encontrar o endereço IP do usuário
Obtenha o endereço IP do usuário em PHP

Apresentaremos uma maneira de acessar o endereço IP do usuário a partir de um servidor em PHP usando a variável superglobal $_SERVER com REMOTE_ADDR como o único elemento do array. É usado como $_SERVER['REMOTE_ADDR'].

Vamos demonstrar outra maneira de acessar o endereço IP do usuário em PHP usando a expressão condicional para verificar se os endereços IP do usuário vêm de uma Internet compartilhada, de um proxy ou é o endereço IP real. Este método usa elementos do array como HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR e REMOTE_ADDR.

Mostraremos um método abreviado para obter o endereço IP do usuário em PHP usando o operador ternário e a função isset(). Este método também usa os elementos do array como HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR e REMOTE_ADDR na supervariável global $_SERVER.

Use $_SERVER['REMOTE_ADDR'] para encontrar o endereço IP do usuário em PHP

Podemos usar a expressão $_SERVER['REMOTE_ADDR'] para encontrar o endereço IP de onde o usuário está acessando a página atual. $_SERVER é a variável superglobal em PHP e leva uma variedade de elementos de array como argumentos. Usamos REMOTE_ADDR como o elemento do array na variável $_SERVER para acessar o endereço IP real do cliente. Observe que $_SERVER['REMOTE_ADDR'] nem sempre fornece o endereço IP correto do cliente em todos os casos. Discutiremos os outros casos a seguir. Certifique-se de que a API do servidor (SAPI) esteja bem configurada para que a expressão acima retorne o IP real da conexão.

No exemplo abaixo, o localhost é usado como servidor. Portanto, ele retorna o endereço IP de loopback. Para saber mais sobre o endereço de loopback, consulte aqui. Suponha que a URL do seguinte script PHP seja http://localhost/index.php. Ele exibe o endereço IP da máquina local como ::1. ::1 é a representação IPv6 do localhost.

Por exemplo, atribua o $_SERVER['REMOTE_ADDR'] a uma variável ip_addr. Em seguida, imprima a variável usando o echo.

Código de exemplo:

# php 7.x
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
echo "The user's IP address is - ".$ip_add;
?>

Resultado:

The user's IP address is - ::1

Use $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] e $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar o endereço IP do usuário

Podemos usar os elementos do array da variável superglobal $_SERVER como $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] e $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar o endereço IP de o usuário em PHP. Use $_SERVER['REMOTE_ADDR'] para encontrar o endereço IP real do usuário. Use $_SERVER['HTTP_CLIENT_IP'] para encontrar o endereço IP quando o usuário estiver acessando a página da Internet compartilhada. Use $_SERVER['HTTP_X_FORWARDED_FOR'] para encontrar o endereço IP quando o usuário usa um proxy para acessar a página web. Observe que cabeçalhos como HTTP_X_FORWARDED_FOR e HTTP_CLIENT_IP podem ser falsificados, pois podem ser configurados por qualquer pessoa. Às vezes, eles podem não representar o endereço IP real do cliente.

Por exemplo, use a função empty() para verificar se $_SERVER['HTTP_CLIENT_IP'] contém algo. Se contiver, atribua o valor na variável $ip e imprima i.
Novamente, execute uma verificação em $_SERVER['HTTP_X_FORWARDED_FOR'] de acordo e atribua o valor e imprima-o se ele existir. Execute uma operação semelhante em $_SERVER['REMOTE_ADDR'].

O exemplo abaixo, $_SERVER['REMOTE_ADDR'] devolve o endereço IP, uma vez que o utilizador não está a utilizar nenhum proxies ou ligação à Internet partilhada. Verifique o Manual PHP para saber mais sobre a matriz $_SERVER.

Código de exemplo:

#php 7.x
<?php if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    echo $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    echo $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    echo $ip = $_SERVER['REMOTE_ADDR'];
}
?> 

Resultado:

 ::1

Use o operador ternário e a função isset() para encontrar o endereço IP do usuário

Podemos usar um método abreviado para encontrar o endereço IP do usuário em PHP usando o operador ternário. Neste método, o método isset() verifica se o array contém os elementos especificados ou os arquivos de cabeçalho.

Por exemplo, use a função isset() para verificar se o array contém HTTP_CLIENT_IP. Se a condição for verdadeira, HTTP_CLIENT_IP é definido. Então, se a condição falhar, a função isset() é usada para verificar se o array contém HTTP_X_FORWARDED_FOR. Da mesma forma, se a condição for verdadeira, HTTP_X_FORWARDED_FOR é definido e REMOTE_ADDR é definido quando a condição falha.

No exemplo abaixo, o cliente não está a utilizar um proxy ou uma Internet partilhada. Portanto, o $_SERVER['REMOTE_ADDR']é executado. Por favor, verifique o MSDN Web Docs para saber mais sobre o operador ternário.

Código de exemplo:

#php 7.x
<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo "The user IP Address is - ". $ip;
?>

Resultado:

The user IP Address is - ::1
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn