Eu coloquei “whatismyip” no título mais para fins de compreensão imediata da finalidade. Eu não pretendo duplicar a funcionalidade desse serviço específico porque ela cresceu além das necessidades do DNS dinâmico. O script a seguir duplica exatamente a funcionalidade e resposta de icanhazip.com e pode facilmente duplicar a resposta de check.dyndns.com com o mero acréscimo de algumas palavras.
A finalidade é não depender de terceiros. Se você tem um site, por que não usá-lo? Com o bônus de não ter nenhuma surpresa futura com o dono do domínio avacalhando tudo (direito dele) e obrigando você a mudar seus scripts, como aconteceu com whatismyip.com.
O script é decepcionante simples:
1 2 3 4 |
<?php header("Content-type: text/plain"); echo $_SERVER['REMOTE_ADDR']; ?> |
Basta salvar isso como, por exemplo, “meuip.php” no seu site e rodá-lo de qualquer lugar. O resultado é idêntico ao de icanhazip.com.
Há quem acredite que o conteúdo da variável REMOTE_ADDR pode ser falsificado pelo usuário e induzir uma vulnerabilidade no script, e que por isso você deveria ao menos checar se o valor recebido é mesmo um valor IP, como neste exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php //fonte: https://www.webmasterworld.com/php/3598882.htm if(isset($_SERVER['REMOTE_ADDR']) && (strlen($_SERVER['REMOTE_ADDR']) > 0) && (ereg('[^0-9\.]', $_SERVER['REMOTE_ADDR']) === false)) { // This variation should be bulletproof, but ereg has already rejected input // containing anything except numerals and periods, so it's also unnecessary. // echo htmlentities(strip_tags($_SERVER['REMOTE_ADDR']), ENT_QUOTES); // Thus, this should do. echo $_SERVER['REMOTE_ADDR']; } else echo 'Unknown'; ?> |
Mas segundo o que é explicado aqui e pelo usuário Achernar aqui, essa preocupação não se justifica, porque REMOTE_ADDR é preenchida pelo servidor www (apache, por exemplo) com o valor na camada de rede, que só pode ser um IP mesmo. Ao contrário de outras variáveis como aquela que identifica o seu browser (HTTP_USER_AGENT) e que podem ter na realidade qualquer texto que o usuário remoto queira.
Então você pode usar o primeiro script sem medo.
Deixe um comentário