Puxar o IP do computador do usuário e registrar no banco de dados

Prezados,

Estou precisando implementar a seguinte funcionalidade em um site que foi feito em html, css e javascript.

O usuário, ao clicar no botão Ok, o IP do usuário é registrado em algum lugar do meu site. Este ip precisa ser registrado de maneira permanente. este IP tem que ser armazenado em algum lugar. Não sei se é possível armazenar no banco de dados do meu site, em alguma pasta do meu provedor de hospedagem. Inclusive eu gostaria de saber sobre esta possibilidade.

Agradeço este já a atenção de vocês. :slightly_smiling_face:

Dê mais detalhes. O site é estático ou tem uma parte dinâmica/backend? Qual linguagem e tecnologias está usando neles?

Toda requisição a um site normalmente vem com o ip, então o objeto que contém os dados da requisição (como header), deve ter essa informação também. O modo de recuperar isso depende da linguagem/framework usado.

Fora isso, uma vez que você tem acesso à informação, é só gravá-la como qualquer outra informação (em um campo varchar em uma base, ou mesmo em um arquivo txt). No seu caso, o clique no botão pode fazer uma requisição qualquer ao servidor, que vai ter o ip.

Obs: por motivos diversos, o ip obtido pode não ser o ip real e único de um cliente/máquina conectado.

Abraço.

1 curtida

Boa tarde , TerraSkill, obrigada pela resposta.
Confesso que li e reli a sua resposta para entender melhor os detalhes técnicos, já que não possuo domínio.

Respondendo a sua pergunta, trata-se de um site simples, feito em html, css e estou tentando fazer essa funcionalidade em javascript.

Esse botão OK estaria relacionado a um banner do site, onde tem aquele aviso sobre aceitar os termos de uso do site e politica de privacidade ( LGPD ).
Gostaria que o visitante, ao concordar as condições, ele clique no botão OK. E , logo em seguida, esta ação seja registrada ( não de forma exposta no site ) com a finalidade de eu armazenar este consentimento que o usuário realizou ao dar “Ok”. Apenas isso. E, preferenciamente, sejam coletados o ip, a data, mês, ano e horário em que essa ação foi realizada.

Espero ter explicado de maneira facilmente compreenssivel. . Desde já muto obrigada pela sua ajuda . :slightly_smiling_face:

Por estático ou dinâmico, o que quero saber é se parte do site é feita em coisas como php, nodejs, java ou afins, que rodam no servidor (não é o javascript que roda na página do usuário). Se sim, é nessa parte que você pode recuperar a informação de ip, dentre outras coisas.

Por exemplo, usando ajax ou similares no cliente, seu botão pode chamar uma url (ex: https: //seusite/gravarConsentimento.php). É nessa url (arquivo php) que você fará a captura do ip, usando a tecnologia que tiver do lado servidor (java, php, etc). Só com javascript do lado cliente, isso não é possível.

Como isso depende da tecnologia, é preciso que você informe o que está usando. Mas, pra ter uma ideia geral, você pode pesquisar [nome da tecnologia] pegar ip do cliente (exemplo: php pegar ip do cliente - Google Search ).

Abraço.

1 curtida

Olá, Terra! Obrigada pelo retorno.

Em principio, o site que desenvolvi não faz uso do php. Faço do uso do html, css e javascript.
Neste caso, vc me recomendaria a fazer o uso do php?
agradeço a atenção desde já!
Abraço,

Para acessar e gravar em uma base dados no servidor, você precisa de um script rodando no servidor. Pode ser php, java, nodejs, etc. Php é possivelmente a mais simples para tal (vide link na resposta anterior).

O javascript do lado do cliente (navegador) não tem como gravar dados em uma base no servidor diretamente. Mas você pode usar o javascript no cliente para disparar a requisição que inicia a captura desses dados.

Abraço.

1 curtida

Entendi, TerraSkill. Muito obrigada.
Uma dúvida: o nodejs não tem relação com o javascript? eu não entendi o nodejs enquanto opção, porque vc me falou anteriormente que o javascript não teria condições de participar desse processo de puxar o ip do cliente.
neste caso eu usaria o nodejs como uma plataforma para programar em outra linguagem ?
Abraço!

Acho que estou começando a entender. O Node JS entraria na parada como uma ferramenta de interação para o PHP funcionar. Seria isso?

Quando falo de javascript no lado cliente, me refiro à código rodando no navegador da pessoa acessando o site. Nodejs roda no servidor onde o site está hospedado. São coisas diferentes.

A linguagem do nodejs é javascript, mas não é nisso que você deve focar. Deixe de lado um pouco o nome das linguagens, foque na diferença entre:

  • código que roda no navegador do usuário (é isso que quero dizer com “javascript do lado cliente”);
  • código que roda no servidor onde o site está hospedado (aqui falo de php, java, nodejs, etc);

Como você disse que quer gravar o ip em uma base de dados no servidor junto com outros dados, precisa de código que rode no servidor. É ele que vai pegar o ip do usuário, data e afins, criar uma conexão com uma base de dados (que está no servidor) e gravar esses dados para usar futuramente (isso se entendi o que você quer fazer).

Não, você pode usar só php (ou só nodejs). Não quer dizer que não possa usar ambos, mas cada um deles consegue fazer o que você precisa por conta própria.

Do lado cliente, você pode usar javascript, como já está fazendo.

Abraço.

1 curtida

Entendi perfeitamente , terra.
Agora que já tenho uma noção do funcionamento e da estratégia, vou pegar este direcionamento para conhecer mais sobre o node js e o php. Espero conseguir, não vai ser da noite para o dia , mas vou correr atrás disso.
Agradeço muito a sua ajuda, foi importantíssimo. Desejo a vc um excelente 2022!
Muito obrigada !

1 curtida

[Lanytech] nesse caso vc subistitui o console.log() por um state pra gegar o IP.

function handleGetIpUser() {
        fetch('https://api.ipify.org?format=json')
            .then(response => response.json())
            .then(data => console.log(data.ip))
            .catch(err => console.log('Erro de solicitação', err));
    }