• 0
Sign in to follow this  
RpgBoss

IPV4 somente com PHP com link ipv4/ipv6

Question

Eu sempre usei $_SERVER['REMOTE_ADDR'] para obter o IP do usuário/visitante em alguns sistemas. Porém comecei a usar um IP FIXO no trabalho, que é IPV4, mas quando vou ver o registro eu acessei com IPV6.

 

Mas em sites como fóruns e blogs os sistemas em PHP deles registram o IPV4, e analisei os códigos e mesmo assim não consegui entender o algorítimo que consegue passar o IPV6 ou outro método para IPV4.

 

Então acredito que seja possível somente com PHP, se alguém puder me ajudar.

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Eu consegui descobrir a razão de alguns sites pegarem o IPV4 mesmo usando IPV6 ao mesmo tempo e a minha hospedagem não, as rotas usadas podem variar do servidor onde foi hospedado a script PHP, então não tem realmente como isso ser feito sem uso de serviço de terceiros.

Agora uma solução alternativa, vale lembrar que não vou postar o serviço de terceiros que usei por que acredito que isso seja mal visto pela comunidade, e que também pode ser considerado um sistema mal feito.

Para poder solucionar eu usei este serviço para converter em JSON o IPV4:

http://<ipv4 ipv6 service>/json/widgetdata.php?callback=_jqjsp&_1518034744039=

Ele retorna uma JSON:

_jqjsp({"address":"XXX.XXX.XXX.XXX","proto":"ipv4","country_code":"BR","country":"Brazil"})

Mas não se pode usar xmlHTTPrequest para receber valores de outra um JSON de outra hospedagem, então através da URL dela eu alterei o termo da variavel **callback** de maneira que a gambiarra fazendo com que o PHP do serviço criasse uma variavel Javascript:

http://<ipv4 ipv6 service>/json/widgetdata.php?callback=dataipv4=

E chamando ele por HTML a variavel fica acessivel ao seu navegador como um objeto JSON:

dataipv4=({"address":"XXX.XXX.XXX.XXX","proto":"ipv4","country_code":"BR","country":"Brazil"})

Então agora sim com xmlHTTPRequest bastou usar a variavel dataipv4.address para obter o IP e enviar por método GET pra um PHP que use o IP:

function showIpv(ip) {
     var xmlhttp = new XMLHttpRequest();
     xmlhttp.onreadystatechange = function() {
         if (this.readyState == 4 && this.status == 200) {
             console.log()
         }
     };
     xmlhttp.open("GET", "write_ipv4.php?ip="+ip, true);
     xmlhttp.send();
}

O arquivo write_ipv4.php que fica na hospedagem:

<?php
if(isset($_GET['ip']) && !empty($_GET['ip'])){
   /* User a variavel global $_GET['ip'] da maneira que preferir
      Por exemplo:
      echo $_GET['ip']
      retorna o IP no formato XXX.XXX.XXX.XXX
   */
}else{
   console.log('Acesso direto proibido');
}
?>

 

Edited by RpgBoss
Remover IP por questão de segurança

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this